【问题标题】:How to generate a path with id for a newly created method in rails controller如何为rails控制器中新创建的方法生成带有id的路径
【发布时间】:2011-07-20 13:51:01
【问题描述】:

我正在向现有的基于 REST 的用户控制器添加新方法“editpass”。

我想将 id 传递给 edit 为 edit_user_path 执行的 editpass 方法

我在 routes.rb 中添加了以下内容

resources :user do
    collection do
     get 'editpass'
    end
 end

 match 'user/:id/editpass' => 'user#editpass'

rake:routes 为 editpass 生成以下内容:

 /user/:id/editpass(.:format)    {:action=>"editpass", :controller=>"user"

这条路线没有路径名。

在rails3中为带有id的方法生成路径的最佳方法是什么

提前致谢

森灵

【问题讨论】:

    标签: ruby-on-rails path routes


    【解决方案1】:

    首先,如果您使用的是resources 而不是resource,则应将user 复数化为users 以更加传统

    resources :users do
      collection do
        get :editpass
      end
    end
    

    那么你可以使用:

    link_to "Edit Pass", [:editpass, :users]
    

    link_to "Edit Pass", editpass_users_path
    

    同时使用match 'user/:id/editpass' => 'user#editpass' 会弄乱你的路线,这是绝对愚蠢的想法,因为你的匹配实际上是member,而你已经将它添加为collection

    【讨论】:

      【解决方案2】:
       match 'user/:id/editpass' => 'user#editpass', :as => 'user_editpass'
      

      这应该让 user_editpass_path(:id => @user) 工作。

      【讨论】:

        猜你喜欢
        • 2014-08-22
        • 1970-01-01
        • 1970-01-01
        • 2012-11-30
        • 2014-03-25
        • 2016-07-21
        • 1970-01-01
        • 2015-12-27
        • 1970-01-01
        相关资源
        最近更新 更多