Estoy migrando una versión de Rails 2.3.8 a Rails 3.0 y he reescrito el archivo de mi ruta. Cuando enumero las rutas usando rake routes
, veo que algunos nombres de ruta tienen _index
adjunto a ellos. No puedo entender por qué es esto.Rails 3 ruta anexa _index al nombre de ruta
rutas pertinentes:
Rails 2.3.8:
map.namespace "tracker", :path_prefix => "" do |planner|
planner.resources :planner, :collection => {:step1 => :get,
:add => :get,
:unsubscribe => [:get, :post] }
end
Rails 3.0 ruta:
namespace "tracker", :path => "" do
resources :planner do
collection do
get :step1
get :add
get :unsubscribe
post :unsubscribe
end
end
end
salida de rake routes
Rails 2.3.8
step1_tracker_planner GET /planner/step1(.:format)
add_tracker_planner GET /planner/add(.:format)
unsubscribe_tracker_planner GET /planner/unsubscribe(.:format)
POST /planner/unsubscribe(.:format)
Rails 3.0
step1_tracker_planner_index GET /planner/step1(.:format)
add_tracker_planner_index GET /planner/add(.:format)
unsubscribe_tracker_planner_index GET /planner/unsubscribe(.:format)
POST /planner/unsubscribe(.:format)
¿Alguna idea de por qué se está añadiendo este _index
sería muy apreciado.
¿Hay alguna manera de cambiar este comportamiento? – etc
Puede usar la palabra "recurso" (singular) en lugar de "recursos" en su archivo de rutas. Esto generará rutas similares como una solicitud de "recursos", con la excepción de la ruta de índice. Como Rails asume que estás trabajando con un objeto singular, no está generando automáticamente un índice porque no tendrías una lista de elementos, solo tendrías uno. Lea más aquí: http://guides.rubyonrails.org/routing.html#singular-resources – Jocko