Rails 2.3.8バージョンをRails 3.0に移行していますので、ルートファイルを書き直しました。私がrake routes
を使ってルートを列挙すると、いくつかのルート名に_index
が追加されています。なぜこのことが分かりませんか?Rails 3ルートはルート名に_indexを追加します
関連経路:
レール2.3.8:
map.namespace "tracker", :path_prefix => "" do |planner|
planner.resources :planner, :collection => {:step1 => :get,
:add => :get,
:unsubscribe => [:get, :post] }
end
レール3.0経路:
namespace "tracker", :path => "" do
resources :planner do
collection do
get :step1
get :add
get :unsubscribe
post :unsubscribe
end
end
end
出力rake routes
レールから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)
この_index
が追加される理由の任意のアイデアをいただければ幸いです。
この動作を変更する方法はありますか? – etc
ルートファイルで "resources"の代わりに "resource"(単数)という単語を使用できます。 これは:indexルートを除いて、 "resources"要求と同様のルートを生成します。 Railsはあなたが単一のオブジェクトを扱っていると仮定しているので、アイテムのリストを持たないため、自動的にインデックスを生成しません。 詳細はこちら:http://guides.rubyonrails.org/routing.html#singular-resources – Jocko