ruby-on-rails - 使用 STI 时,如何强制 Rails 在 link_to 帮助程序中使用父类(super class)名称?

标签 ruby-on-rails ruby routes single-table-inheritance

我正在将 STI 与 Rails 3.2 应用程序一起使用。我想强制 Rails 使用 link_to 中的父类(super class)名称帮助程序(或生成路径时的任何其他位置)而不是子类名称。

所以,<%= link_to current_user.name, current_user %>产生/:class_name/:id (类(class)名称可以是“主持人”、“成员(member)”等...)。

我希望它生成 /users/:id ,其中users不会更改子类的名称。我知道我可以改变current_useruser_path(current_user) ,但我更喜欢使用快捷方式,让 Rails 自己解决。

这可能吗?

最佳答案

我认为你应该定义 url 助手,像这样

def moderator_url record
  user_url record
end

或者只使用别名

alias :moderator_url :user_url

当您将记录作为选项传递时,这是 Rails 用于生成 url 的代码

https://github.com/rails/rails/blob/537ede912895d421b24acfcbc86daf08f8f22157/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb#L90

关于ruby-on-rails - 使用 STI 时,如何强制 Rails 在 link_to 帮助程序中使用父类(super class)名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11849072/

相关文章:

ruby - 选择哪个 div 类 ruby​​ 应该选择? (使用 watir)

ruby-on-rails - Rails 非图像文件上传到数据库而不使用服务器端临时文件?

ruby-on-rails - Rails 5,Rolify - 从用户中删除角色

ruby-on-rails - 如何判断GIF是不是动画?

ruby-on-rails - simple_format 和 2+ 换行符(\n)

ruby-on-rails - Rails 3.1 错误捕获

ruby-on-rails - 未知属性 : user_id

ruby-on-rails - 命名路由 _path 与 _url

c# - ASP.NET MVC 路由,当我删除文化(语言)时出现 404

c++ - 如何使用自定义消息扩展 Inet 的不同模块?