Friendly Id Custom Slug

2019-06-28 02:17发布

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

2条回答
Bombasti
2楼-- · 2019-06-28 02:46

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
查看更多
戒情不戒烟
3楼-- · 2019-06-28 02:49

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
查看更多
登录 后发表回答