我正在使用带有Rails 3.2应用程序的STI。我想强制Rails在link_to
帮助器中使用超类名称(或者在生成路径的任何其他位置)而不是子类名称。
因此,<%= link_to current_user.name, current_user %>
生成/:class_name/:id
(类名称可以是“主持人”,“会员”等等。)
我希望它生成/users/:id
,其中users
不会更改为子类的名称。我知道我可以将current_user
更改为user_path(current_user)
,但我更喜欢使用快捷方式,让Rails弄明白。
这可能吗?
答案 0 :(得分:2)
我认为你应该定义url helpers,类似这样的
def moderator_url record
user_url record
end
或者只使用别名
alias :moderator_url :user_url
当您将记录作为选项传递时,这是用于生成URL的代码
答案 1 :(得分:0)
对于链接,我可以通过添加资源来解决这个问题:
resources :owners, path: 'users', controller: 'users'
对于表单,我需要指定通用表单。我最初的表格是
= simple_form_for @user do |f|
为了使这项工作,我必须指定路径和方法,同时使用通用名称而不是直接将用户对象传递给表单:
= simple_form_for :user, url: user_path(@user) do |f|
答案 2 :(得分:0)
使用指定路线:
<%= link_to current_user.name, user_path(current_user) %>