On Saturday, January 26, 2019 at 3:04:14 PM UTC-5, Walter Lee Davis wrote:
>
>
> > On Jan 26, 2019, at 1:57 PM, fugee ohu <[email protected] <javascript:>>
> wrote:
> >
> >
> >
> > 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 <[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.
> >
> >
> > Yes I forgot that my :headline column is actually text so this would be
> necessary Also I don't see reason to use friendly_id for anything but the
> show action, why try to find records by slug for edits, updates and
> deletes?
> >
>
> No, there's no actual reason you have to do this for all routes. You can
> mix the two (Article.find and Article.friendly.find) within the same
> controller.
>
> Another thing you may have missed in the documentation is that
> friendly.find will also find the actual record by its ID, too. So there's
> no harm in passing the ID in most of the routes and the slug in one route,
> one method will find either way. I suppose it may be slower that way, but
> only just a little. This happens here:
>
>
> https://github.com/norman/friendly_id/blob/master/lib/friendly_id/finder_methods.rb#L20
>
>
> 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] <javascript:>.
> > To post to this group, send email to [email protected]
> <javascript:>.
> > To view this discussion on the web visit
> https://groups.google.com/d/msgid/rubyonrails-talk/bb0d026c-f9ec-4286-8329-3f30a2d99b2a%40googlegroups.com.
>
>
> > For more options, visit https://groups.google.com/d/optout.
>
>
TypeError: no implicit conversion of Symbol into Integer
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 [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/f44d1478-7428-4098-a280-a1dfd056b398%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.