Рельсы 3 | Маршрутизация: как переименовать название ресурса сейчас?
Как правило, у меня есть модель MenuItems и пытаюсь сделать '/menu_items (/: id (:/some_action)). URL-адреса выглядят как'/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
Но он выглядит некорректно из-за огромного количества кода.
Похоже, что теперь работает как map.some_name второй Rails.
Любая помощь/предложения/руководства? (Спасибо)
Ответы
Ответ 1
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"}
Ответ 2
Другой способ
resources :menu, :as => :menu_items, :controller => :menu_items
Этот подход имеет то преимущество, что все доступные вспомогательные методы, такие как menu_items_path, все еще работают.