Подтвердить что ты не робот

Рельсы 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.

Любая помощь/предложения/руководства? (Спасибо)

4b9b3361

Ответ 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, все еще работают.