我将在此之前提到我是RoR的新手。我有一个驻留在嵌套模块::Physical::Users::User
中的类。代码被组织到诸如app \ controllers \ physical \ users之类的路径中。
当我尝试使用form_for
时出现问题:
<% form_for @user do |f| %>
...
<% end %>
我收到错误ActionView::TemplateError undefined method 'physical_users_users_path'
据我所知,这与rails期望与我的路线不匹配的路线有关。为了使我的应用程序工作,以便资源:用户直接进入正确的目录(这样我就不必使用http:\ myurl.com \ physical \ users \ users \ 1',我将以下内容放入我的routes.rb文件:
map.resources :users, :controller => 'physical/users/users'
当我运行“&gt; rake routes”时,我得到以下内容:
users GET /users(.:format) {:controller=>"physical/users/users", :action=>"index"}
POST /users(.:format) {:controller=>"physical/users/users", :action=>"create"}
new_user GET /users/new(.:format) {:controller=>"physical/users/users", :action=>"new"}
edit_user GET /users/:id/edit(.:format) {:controller=>"physical/users/users", :action=>"edit"}
user GET /users/:id(.:format) {:controller=>"physical/users/users", :action=>"show"}
PUT /users/:id(.:format) {:controller=>"physical/users/users", :action=>"update"}
DELETE /users/:id(.:format) {:controller=>"physical/users/users", :action=>"destroy"}
/:controller/:action/:id
/:controller/:action/:id(.:format)
有没有办法维护我的用户资源的较短网址并让form_for
查找正确的路线?
同样,我是新人,所以如果我在这个解释中遗漏了什么,请告诉我!
-
作为对以下回复的回应,控制器位于app / controllers / physical / users / users_controller.rb。
更改路由以使用名称空间,如:
map.namespace :physical do |physical|
physical.namespace :users do |users|
users.resources :users
end
end
生成与form_for
正在寻找的路线一致的路线,但后来我失去了使用URL http:\ mysite.com \ users \ 1的能力。
感谢您的帮助!
答案 0 :(得分:1)
在路由中,您必须使用名称空间表示模块:
namespace :physical do
namespace :users do
map.resources :users
end
end
答案 1 :(得分:1)
同意@sespindola,但是app \ controllers \ physical \ users的控制器 - 我认为这是命名空间问题
我认为这可能适合你:
map.resources :users, :path_prefix => ':physical'
答案 2 :(得分:0)