我將以我剛剛接觸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