2011-01-01 10 views
12

Generalnie mam elementów menu modelu i próbuje zrobić '/ menu_items (/: id (:/some_action))' URL wygląda jak '/ menu (/: id (:/some_action))'Szyny 3 | Routing: jak zmienić nazwę tytułu zasobu teraz?

W Rails 2.3. 5 było

map.resources :menu_items, :as => :menu, :path_names => { :new => 'add' }

teraz w Rails 3.0.3 jestem w stanie obsługiwać go za pomocą tego ogromnego paragraf kodeksu

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

Ale wygląda na nieprawidłowy z powodu ogromnej ilości kodu. Wydaje się, że teraz działa jak mapa 2. miejsca Railsów.

Każda pomoc/sugestie/przewodniki? (Dzięki)

Odpowiedz

26

http://guides.rubyonrails.org/routing.html#customizing-resourceful-routes

resources :menu, :controller => "menu_items", :path_names => { :new => "add" } 

wyjściowa jest dość blisko tego, co jesteś po:

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"} 
+0

Dzięki! Miss to. Dokładnie tego potrzebuję. – jibiel

+0

Czy można zmienić jako: nazwa również dla nowej nazwy ścieżki? – TheJKFever

13

Innym sposobem

resources :menu, :as => :menu_items, :controller => :menu_items 

Podejście to ma tę zaletę, że Wychodzenie metody pomocnicze, takie jak menu_items_path, nadal działają.