Rails在路径中使用对象属性

时间:2013-09-25 22:03:33

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

我正在尝试使用路径助手来处理对象的名称属性

所以在路线

get 'reset/:name', to: 'users#reset_name', as: 'reset_name'

在controller reset_name def

... @user

在视图中(html.erb)

... <%= link_to reset_name_path(@user) %>

由于某种原因链接仍然像/ reset / name / 1那样出现,它使用对象的id而不是name。我做错了什么?

1 个答案:

答案 0 :(得分:0)

您可以覆盖to_param方法,以便在生成路由时使Rails使用name而不是id。这将适用于在User模型上运行的所有路线。

class User < ActiveRecord::Base
  def to_param
    name
  end
end

或者,如果您只想对某些路线执行此操作,则只需更改link_to

<%= link_to reset_name_path(:name => @user.name) %>