我将类别添加到我的应用程序中,并试图让链接中的丑陋 ID 消失。(我在 Rails 4 上)
没有太多的运气。
目前我有
http://localhost:3000/categories/1
每个类别都有一个名称,我如何更改类别链接以显示该类别的NAME
而不是该ID
类别的。
例如
http://localhost:3000/categories/atoms
我将类别添加到我的应用程序中,并试图让链接中的丑陋 ID 消失。(我在 Rails 4 上)
没有太多的运气。
目前我有
http://localhost:3000/categories/1
每个类别都有一个名称,我如何更改类别链接以显示该类别的NAME
而不是该ID
类别的。
例如
http://localhost:3000/categories/atoms
你应该实现Category#to_param
方法:
def to_param
name
end
此方法在 Rails 内部用于为您的资源生成适当的 url。更多信息在这里:
http://apidock.com/rails/ActiveRecord/Integration/to_param
不要忘记改变
Category.find(params[:id])
至:
Category.find_by_name!(params[:id])
因为从现在开始,您将使用名称而不是 id 搜索正确的类别。
尽管 Marek Lipka 的回答是正确的并且会起作用,但我通常喜欢使用 gem friendly-id为我做这件事。它具有以下链接中提到的一些其他好处。
Ryan Bates 在Railscasts #314中也报道了它。