【问题标题】:ruby on rails: setting rails routes with :pathruby on rails:使用 :path 设置 rails 路线
【发布时间】:2013-06-24 11:29:42
【问题描述】:

我有一些这样的路线:

resources :users do
  member do
    get 'services', :path => 'services/edit', :defaults => { :servicable => 'user' }
  end
end

这让我拥有localhost:3000/users/1/services/edit

我正在尝试为其添加动态路径。

我尝试添加:as => :edit_services_path

get 'services', :path => 'services/edit', :defaults => { :servicable => 'user' }, :as => :edit_services_path

所以我可以尝试这样的事情:

<%= link_to "Edit", edit_services_path %>

但它给了我错误。

undefined local variable or method `edit_services_path' for #<#<Class:0x007f856fd5a970>:0x007f856ff18690>

如果我正在自定义路径,我尝试搜索添加新路径的正确方法,但没有任何运气,

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.2 routes


    【解决方案1】:

    使用您指定的方法确实会产生动态路径,而不是您尝试使用的路径。它产生:

    services_user GET    /users/:id/services/edit(.:format)                users#services {:servicable=>"user"}
    

    添加:as 选项会创建:

    edit_services_path_user GET    /users/:id/services/edit(.:format)                users#services {:servicable=>"user"}
    

    这有点令人困惑,因为通常path 没有在路径中指定,而是用作路径本身的助手(即services_user 路径将是services_user_pathpath helper)所以如果命名对您来说很重要,这可以被巧妙地利用,但它会生成动态路径,您也可以在更改内容时使用rake routes 来查看这些。

    【讨论】:

    • 哦,谢谢!是的,我使用的是rake routes,但我找不到services_user,直到你说我正在寻找它,谢谢!
    猜你喜欢
    • 2011-02-15
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多