我将以我刚刚接触RoR的事实为序。我有一个驻留在嵌套模块中的类::Physical::Users::User
。该代码被组织到诸如app \ controllers \ physical \ users之类的路径中。不正确的嵌套模块路由
我的问题是当我尝试使用form_for
这样的:
<% form_for @user do |f| %>
...
<% end %>
我得到的错误ActionView::TemplateError undefined method 'physical_users_users_path'
我明白,这有轨期待不符合我的路线做。为了使我的应用程序工作,使资源:用户直接进入正确的目录(以便我不必使用http:\ myurl.com \ physical \ users \ users \ 1',我将以下内容我的routes.rb文件:
map.resources :users, :controller => 'physical/users/users'
当我运行“>耙路线”我得到如下:
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)
是否有较短的URL保持我的用户资源,并得到form_for
的方式寻找正确的路线?
再次,我是新的,所以如果在这个解释中有什么我不知道的话, 让我知道!
-
响应于下面的答复时,控制器驻留在应用程序/控制器/物理/用户/ users_controller.rb。
更改路由使用像命名空间:
map.namespace :physical do |physical|
physical.namespace :users do |users|
users.resources :users
end
end
产生是什么form_for
正在寻找一致的路线,但后来我失去了使用URL http能力:\ mysite.com \用户\ 1。
感谢您的帮助!
你能解释你的控制器被命名的原因:controller =>“physical/users/users”? - 通常它只是“用户” – 2010-07-23 01:26:04
另外 - 什么是您的users_controller文件的完整路径?是/app/controllers/physical/users_controller.rb?或者它是/app/controllers/physical/users/users_controller.rb? – 2010-07-23 12:48:10
我正在关注Dan Chak的[Enterprise Rails](http://oreilly.com/catalog/9780596515201)。物理层指示与物理数据库模型交互的类,而逻辑层中的类则处理构建在业务逻辑之上的类等。 – 2010-07-23 13:02:22