类别:id to:链接中的名称

时间:2013-08-14 14:46:10

标签: ruby-on-rails migration ruby-on-rails-4

我在我的应用中添加了类别,并尝试在链接中获取丑陋的ID。 (我在Rails 4

没有多少运气。

目前我有

http://localhost:3000/categories/1

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

e.g。

http://localhost:3000/categories/atoms

2 个答案:

答案 0 :(得分: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搜索正确的类别。

答案 1 :(得分:2)

尽管Marek Lipka的回答是正确的并且可行,但我通常喜欢使用gem friendly-id来为我做这件事。它有一些额外的好处,在下面的链接中提到。

Ryan Bates也在Railscasts #314覆盖了它。