friendly-id - 访问具有id但显示slug的资源

时间:2018-03-27 02:12:47

标签: ruby-on-rails friendly-id

目前我需要使用资源:id来加载页面,但是认为默认情况下显示友好id:slug会很不错。我已经在使用norman/friendly-id

如果我访问

app.example.com/houses/1

我希望地址栏能够显示

app.example.com/houses/128-prinsep-st-singapore-1

friendly-id是否支持此功能?或者这是一个很好的方法吗?

1 个答案:

答案 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'

希望这对你有用。