6

I have a Post model

#post.rb   
extend FriendlyId
friendly_id :slug_candidates, use: [:slugged, :history]

I'm trying to customize the url for each post like so

#post.rb 
def slug_candidates
 "#tutorial-#{user.display_name}-#{title}"
end

Friendly id keeps generating UUID slugs while I'd like it to generate a comprehensive url

Typically I get \tutorial-john-49c9938b-ece5-4175-a4a4-0bb2b0f26a27 Instead of \tutorial-john-some-comprehensive-title

Thank you

tadman
  • 208,517
  • 23
  • 234
  • 262
Zonblar
  • 107
  • 5

2 Answers2

2

I edited the response, sorry. It seems friendly_id expects an array of slug candidates. As you can see here

please try this:

#post.rb 
def slug_candidates
  [ "#tutorial-#{user.display_name}-#{title}" ]
end
amalrik maia
  • 478
  • 5
  • 11
  • tested with this but only got \tutorial-john. Seems like the title doesn't get generated by friendly id – Zonblar Apr 07 '16 at 08:50
1

Understood. The slug was generated before I saved the title. It was therefore generated with a nil title. I had to override the should_generate_new_friendly_id method

def should_generate_new_friendly_id?
  slug.blank? || title_changed?
end
Zonblar
  • 107
  • 5