通常我有MenuItems模型并试图使'/ menu_items(/:id(:/ some_action))'的网址看起来像'/ menu(/:id(:/ some_action))'
在Rails 2.3.5中它是
map.resources :menu_items, :as => :menu, :path_names => { :new => 'add' }
现在在Rails 3.0.3中我可以使用这段巨大的代码来处理它
resources :menu_items, :path_names => { :new => 'add' }
match 'menu/' => 'menu_items#index', :as => :menu
match 'menu/add' => 'menu_items#new', :as => :new_menu
match 'menu/:id' => 'menu_items#show', :as => :show_menu
match 'menu/:id/edit' => 'menu_items#edit', :as => :edit_menu
但由于代码量很大,它看起来不正确。 似乎:就像第二个Rails的map.some_name现在一样。
任何帮助/建议/指南? (感谢)
答案 0 :(得分:26)
http://guides.rubyonrails.org/routing.html#customizing-resourceful-routes
resources :menu, :controller => "menu_items", :path_names => { :new => "add" }
输出非常接近你所追求的目标:
menu_index GET /menu(.:format) {:controller=>"menu_items", :action=>"index"}
POST /menu(.:format) {:controller=>"menu_items", :action=>"create"}
new_menu GET /menu/add(.:format) {:controller=>"menu_items", :action=>"new"}
edit_menu GET /menu/:id/edit(.:format) {:controller=>"menu_items", :action=>"edit"}
menu GET /menu/:id(.:format) {:controller=>"menu_items", :action=>"show"}
PUT /menu/:id(.:format) {:controller=>"menu_items", :action=>"update"}
DELETE /menu/:id(.:format) {:controller=>"menu_items", :action=>"destroy"}
答案 1 :(得分:13)
另一种方式
resources :menu, :as => :menu_items, :controller => :menu_items
这种方法的优点是现有的辅助方法如menu_items_path仍可用。