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.