0

我正在尝试让路径助手使用对象的 name 属性

所以在路线

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

在控制器 reset_name def

... @user

在视图中 (html.erb)

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

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

4

1 回答 1

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) %>
于 2013-09-26T04:03:13.233 回答