contact_us gem バージョン 0.5.4を使用しています
routes.rb ファイルで次のコードを実行しました
resources :contacts, controller: 'contact_us', only: [:new, :create] do
root :to => 'contact_us#new'
end
私の理解では、上記のルートはアクションcontacts
のみをサポート:new
し:create
、指定されたコントローラーcontroller: 'contact_us'
ではルートでもアクション/
にリダイレクトされますが、ブラウザーでhttp://localhost:3000/contact-usにアクセスすると、#new
不明なアクション
ContactUsController のアクション「インデックス」が見つかりませんでした
Rails のバージョンを 3.2.19 から 4.0.13 に、Ruby を 2.0.0p481 にアップグレードしました。
古いコードは Rails 3.2.19 と Ruby 1.8.7 で正常に動作していました
resources :contacts,
:controller => 'contact_us',
:only => [:new, :create]
match 'contact_us' => 'contact_us#new'
上記のコードでのみ変更match
するとget
、このエラーがスローされます
/home/vagrant/.rvm/gems/ruby-2.0.0-p481/gems/actionpack-4.0.13/lib/action_dispatch/routing/route_set.rb:430:in `add_route': 無効なルート名、すでに使用されています: 'contact_us' (ArgumentError)
オプションを使用して同じ名前の 2 つのルートを定義した
:as
か、同じ名前のリソースによって既に定義されているルートを上書きしている可能性があります。resources
後者については、ここで説明されているように、作成されたルートを制限できます。