I''m creating article teasers for my blogs main page and I am simple adding in my post.rb file the following.. class Post < ActiveRecord::Base has_many :comments # Before the form is saved we update the time to be more accurate # and format post_text to post_html using RedCloth/textile # ***No need to add text to post_html field in the form, this happens automatically def before_save self.created_at = Time.now self.author_name = ''Nevyn'' if self.author_name.nil? or self.author_name.empty? self.post_html = RedCloth.new(self.post_text).to_html end def teaser #return article teaser first paragraph teaser = self.post_html.slice(0, (self.post_html =~ /\r?<\/p>\r?$/)).rstrip return teaser end end my db schema has a ''post_text'' and ''post_html'' column, you can see above how I am using RedCloth. But I am wondering since I am new to Ruby, if there is a cleaner way to do this. Thanks, -- -mike --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Michael Steinfeld wrote:> I''m creating article teasers for my blogs main page and I am simple adding > in my post.rb file the following.. > > class Post < ActiveRecord::Base > has_many :comments > > # Before the form is saved we update the time to be more accurate > # and format post_text to post_html using RedCloth/textile > # ***No need to add text to post_html field in the form, this happens > automatically > def before_save > self.created_at = Time.now > self.author_name = ''Nevyn'' if self.author_name.nil? or > self.author_name.empty? > self.post_html = RedCloth.new(self.post_text).to_html > end > > def teaser > #return article teaser first paragraph > teaser = self.post_html.slice(0, (self.post_html =~ > /\r?<\/p>\r?$/)).rstrip > return teaser > end > > end > > my db schema has a ''post_text'' and ''post_html'' column, you can see above how > I am using RedCloth. > > But I am wondering since I am new to Ruby, if there is a cleaner way to do > this.A few comments: * You don''t need the line to set the created_at time - Rails does this automatically. * You can use: if self.author_name.blank? - nil.blank? is true, and so is "".blank? and " ".blank? * Instead of self.post_html.slice(0, regex-match-value), do self.post_html.slice(0..regex-match-value). This way if the regular expression is not matched and returns -1, you''ll get the whole content of the post instead of nil. * Instead of doing teaser = ...; return teaser, you can just have the slice method: def teaser self.post_html.slice(0,whatever) end Hope this helps, Dan Manges --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 1/14/07, Dan Manges <daniel.manges-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > > Michael Steinfeld wrote: > > I''m creating article teasers for my blogs main page and I am simple > adding > > in my post.rb file the following.. > > > > class Post < ActiveRecord::Base > > has_many :comments > > > > # Before the form is saved we update the time to be more accurate > > # and format post_text to post_html using RedCloth/textile > > # ***No need to add text to post_html field in the form, this happens > > automatically > > def before_save > > self.created_at = Time.now > > self.author_name = ''Nevyn'' if self.author_name.nil? or > > self.author_name.empty? > > self.post_html = RedCloth.new(self.post_text).to_html > > end > > > > def teaser > > #return article teaser first paragraph > > teaser = self.post_html.slice(0, (self.post_html =~ > > /\r?<\/p>\r?$/)).rstrip > > return teaser > > end > > > > end > > > > my db schema has a ''post_text'' and ''post_html'' column, you can see above > how > > I am using RedCloth. > > > > But I am wondering since I am new to Ruby, if there is a cleaner way to > do > > this. > > A few comments: > * You don''t need the line to set the created_at time - Rails does this > automatically.Well, the reason I am using that is if it takes me 10 minutes to write the article, I don''t get the time since I clicked "Create New Post" I get the time that the post was actually submitted. Guess that really Isn''t a big deal. * You can use: if self.author_name.blank? - nil.blank? is true, and so> is "".blank? and " ".blank?* Instead of self.post_html.slice(0, regex-match-value), do> self.post_html.slice(0..regex-match-value). This way if the regular > expression is not matched and returns -1, you''ll get the whole content > of the post instead of nil.Thanks for the tip! I should hope that it will always be matched, I mean if a post is created self.post_html should have at at least one set of <p> elements. * Instead of doing teaser = ...; return teaser, you can just have the> slice method: > def teaser > self.post_html.slice(0,whatever) > endYeah the return teaser part comes from my python background :) And yes it was a help, Thank you! Hope this helps,> > Dan Manges > > > > >-- -mike --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---