【问题标题】:Categories :id to :name in link类别 :id 到 :name 链接
【发布时间】:2013-08-14 14:46:09
【问题描述】:

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

运气不好。

目前我有

http://localhost:3000/categories/1

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

例如

http://localhost:3000/categories/atoms

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

  • 您能再解释一下吗(编辑)? (我对 Rails 比较陌生)。如果您说明我将各种更改放在哪里,我会帮我很多。谢谢!
  • @TheMiniJohn - 我扩展了我的答案。如果您有更多问题 - 请更具体一点。
  • 非常感谢 Marek,我明白了 :) 你太棒了!
【解决方案2】:

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

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

【讨论】:

  • 我前段时间尝试了 Friendly-id,但卡在了 Rails4 的一些更改上。但我一定会再次检查的:)谢谢
猜你喜欢
  • 2013-12-12
  • 1970-01-01
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
  • 2011-12-12
  • 2023-01-02
  • 2014-01-18
  • 1970-01-01
相关资源
最近更新 更多