On Saturday, January 26, 2019 at 12:56:04 PM UTC-5, Walter Lee Davis wrote:
>
>
> > On Jan 26, 2019, at 5:27 AM, fugee ohu <fuge...@gmail.com <javascript:>> 
> wrote: 
> > 
> > 
> > 
> > On Friday, January 25, 2019 at 9:06:22 AM UTC-5, Walter Lee Davis wrote: 
> > 
> > > On Jan 25, 2019, at 6:00 AM, fugee ohu <fuge...@gmail.com> wrote: 
> > > 
> > > I wanna convert my news stories to use slug urls based on the 
> :headline column instead of id's but some of the rows contain special 
> characters like double quotes, exclamation points, do I need to gsub those 
> out 
> > 
> > An interesting theory, but FriendlyId already does this, quite 
> elaborately. The logic that does the "dumbification" is delegated to 
> ActiveSupport's parameterize method, which takes everything not-ASCII and 
> transliterates it into ASCII, and replaces any run of whitespace with a 
> single dash, and removes punctuation. Next, the slug is checked for 
> duplicates with any existing record, and a UUID is appended if so. It's 
> really quite well done and very settled code. I have been using FriendlyId 
> for 8 years or more without encountering any error that wasn't my own 
> mistake. 
> > 
> > In another of your many threads, you mention that you are trying to 
> create a slug out of the article's text, rather than the headline (as the 
> documentation encourages). You may want to try starting from a truncated 
> copy of the article text (or even following the directions) before you 
> assume that FriendlyId is at fault here. I doubt that your article text 
> will fit into the size constraints of a URL segment, particularly if you 
> worry about IE users seeing the thing at all*' 
> > 
> > Walter 
> > 
> > *The entire URL, including prefix, host, port, and path, must be no more 
> than 1,024 characters ASCII in order to be visited by IE. 
> > 
> > 
> > So I have to change the length of the varchar field and the length of 
> the index as well? 
>
> I don't know what your schema looks like right now. Here's how I have 
> always used FriendlyID: 
>
> 1. I have a `title` column, normal string, 255 characters limit. The 
> client or user can enter whatever she wants up to that limit. 
> 2. I use the FriendlyID migration generator to create the slug column on 
> my model. 
> 3. I configure FriendlyID according to the  instructions (extend, then 
> friendly_id :title, use: :slugged in the model). 
> 4. Profit. 
>
> There's really nothing else needed except changing find to friendly.find 
> in the controller. 
>
> I don't give the client/user the ability to create a too-long slug, by 
> starting from a source text that is short enough. 
>
> If you wanted to start from the article text (say, a true text field of 
> thousands of characters), I would start by trimming that text down to the 
> first couple hundred characters. And then, because slugs must be unique, I 
> would imagine you would have quite a few natural collisions, and might end 
> up with a fair amount of disambiguated slugs that end in UUID-shaped 
> garbage strings. 
>
> I believe that FriendlyId has the ability to call methods (rather than 
> being bound to just the actual database columns) when calculating the slug, 
> so you could start from `article_body` (a text column, tens of thousands of 
> characters or a clob) and then limit that with truncate or another 
> string-splitting method, like this: 
>
> (in your model) 
>
> friendly_id :article_preview, use: :slugged 
>
> def article_preview 
>   # cut off at 200 characters, without an ellipsis 
>   article_text.truncate(200, '') 
> end 
>
> Does that make sense? 
>
> Walter 
>
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups "Ruby on Rails: Talk" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to rubyonrails-ta...@googlegroups.com <javascript:>. 
> > To post to this group, send email to rubyonra...@googlegroups.com 
> <javascript:>. 
> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rubyonrails-talk/0d80957a-d522-4f30-9aeb-a355ea132b0b%40googlegroups.com.
>  
>
> > For more options, visit https://groups.google.com/d/optout. 
>
>
from app/models/press_release.rb:17:in `truncated_headline'

class PressRelease < ApplicationRecord

  extend FriendlyId
  friendly_id :truncated_headline, use: :slugged

         
  def truncated_headline 
  # cut off at 200 characters, without an ellipsis 
headline.truncate(255, '') 
  end 

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/01d0da8a-e7ed-4b65-84f8-b3c2e2cc497b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to