> On Jan 26, 2019, at 5:27 AM, fugee ohu <[email protected]> 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 <[email protected]> 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 [email protected]. > To post to this group, send email to [email protected]. > 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. -- 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 [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/CDC664B7-5E11-404B-A1AA-1F0B35E3D1F5%40wdstudio.com. For more options, visit https://groups.google.com/d/optout.

