【问题标题】:What is the link_to path to a non-resourceful route?非资源路由的 link_to 路径是什么?
【发布时间】:2012-02-19 04:26:40
【问题描述】:

我有一个在路由中使用 SHA 令牌的非资源路由。这是在我的 routes.rb 文件中:

match 'permissions/confirm/:token' => 'permissions#confirm'

我可以访问生成的路由,但我不知道要为 link_to 助手传递什么。

这是我用于 link_to 的,它不起作用:

<%= link_to "Give permission", confirm_permission_path(:token => @permission.token) %>

想法?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3


    【解决方案1】:

    将:as 键添加到您的路线中,例如match 'permissions/confirm/:token' =&gt; 'permissions#confirm', :as =&gt; :confirm_permissions

    然后&lt;%= link_to "Give permission", confirm_permissions_path(:token =&gt; @permission.token) %&gt;

    【讨论】:

    • 这似乎有道理,当我查看rake routes 时看起来不错,但我仍然收到未定义的方法错误:undefined method confirm_permission_path。
    • 是不是应该是confirm_permissions_path,复数形式。
    • 是的,这似乎是问题所在。谢谢!
    【解决方案2】:

    您始终可以使用rake routes 来确定路径的名称。我一直在仔细检查该 rake 任务的输出,以确保我使用的是正确的 restful 或 non-restful 路线。

    【讨论】:

    • rake routes 显示路径为/permissions/confirm/:token(.:format)。但我不确定该路线的 link_to 助手应该是什么样子。
    • 运行rake routes时,有3列数据。第一列是 link_to 路径,例如:users_path。第二列是格式(例如/users/index(.:format)。最后,第三列是动作和控制器(例如{:controller =&gt; etc ...}。所以看看第一列,你会看到你需要的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多