目前我需要使用资源:id来加载页面,但是认为默认情况下显示友好id:slug会很不错。我已经在使用norman/friendly-id
了如果我访问
app.example.com/houses/1
我希望地址栏能够显示
app.example.com/houses/128-prinsep-st-singapore-1
friendly-id是否支持此功能?或者这是一个很好的方法吗?
答案 0 :(得分:2)
FriendlyId提供了一个" slug候选者"允许您指定备用slugs的功能,以便在您要使用的那个已经使用的情况下使用。例如:
class Example < ActiveRecord::Base
extend FriendlyId
friendly_id :slug_candidates, use: :slugged
# Try building a slug based on the following fields in
# increasing order of specificity.
def slug_candidates
[
:name,
[:name, :city],
[:name, :street, :city],
[:name, :street_number, :street, :city]
]
end
end
e1 = Example.create! name: 'Plaza Diner', city: 'New Paltz'
e2 = Example.create! name: 'Plaza Diner', city: 'Kingston'
e1.friendly_id #=> 'plaza-diner'
e2.friendly_id #=> 'plaza-diner-kingston'
希望这对你有用。