ruby on rails:使用:path设置rails路由

时间:2013-06-27 05:21:48

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

我有一些这样的路线:

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>

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

由于

1 个答案:

答案 0 :(得分: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_path与{ {3}})所以,如果命名对你很重要,那么这可以很精细,但它会生成动态路径,你也可以使用rake routes来查看这些内容。