1

我将类别添加到我的应用程序中,并试图让链接中的丑陋 ID 消失。(我在 Rails 4 上

没有太多的运气。

目前我有

http://localhost:3000/categories/1

每个类别都有一个名称,我如何更改类别链接以显示该类别的NAME而不是该ID类别的。

例如

http://localhost:3000/categories/atoms
4

2 回答 2

3

你应该实现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 搜索正确的类别。

于 2013-08-14T14:48:16.863 回答
2

尽管 Marek Lipka 的回答是正确的并且会起作用,但我通常喜欢使用 gem friendly-id为我做这件事。它具有以下链接中提到的一些其他好处。

Ryan Bates 在Railscasts #314中也报道了它。

于 2013-08-14T14:57:52.617 回答