2016-11-17 1 views
1

私は、私の理解ではcontactsための上記のルートは唯一:new:create行動をサポートします、私はRails 4.0.x contact_us gemのルートアクションを指定されたアクションにルーティングする方法は?

私のroutes.rbをファイル内のコードを以下まし
resources :contacts, controller: 'contact_us', only: [:new, :create] do 
    root :to => 'contact_us#new' 
end 

contact_us宝石のバージョン0.5.4

を使用していますそして、指定されたコントローラーcontroller: 'contact_us'でも根を持つ/それは#newアクションにリダイレクトされますが、私は私のブラウザでhttp://localhost:3000/contact-usを打ったとき、それは

を語ります私は2.0.0p481

に3.2.19から4.0.13とルビーに古いレールのバージョンをアップグレードしたアクション「インデックス」はContactUsController

見つかりませんでした

不明アクション
私はそれが、このエラーがスローされます上記のコードでgetmatchを変更した場合のコードは、レール3.2.19と1.8.7ルビー

resources :contacts, 
    :controller => 'contact_us', 
    :only  => [:new, :create] 
match 'contact_us' => 'contact_us#new' 

で罰金働いていた

「 `add_route /home/vagrant/.rvm/gems/ruby-2.0.0-p481/gems/actionpack-4.0.13/lib/action_dispatch/routing/route_set.rb:430:in

:無効すでに使用中のルート名、「contact_us」 (例外ArgumentError)

あなたは:asオプションを使用して同じ名前 を持つ2つのルートを定義していること、またはすでにルートを上書きすることができる 同じでリソースによって定義されましたネーミング。後者の場合、あなたは 、ここで説明したようにresourcesで作成したルートを制限することができます:あなたはレール3.2で行ったように

答えて

3

がcontact_usモジュールにroute fileをチャットにAlbinによってジョブ

resources :contacts, 
    :controller => 'contact_us', 
    :only  => [:new, :create] 
get 'contact_us' => 'contact_us#new', as: :contact_us2 

を特定しないように、すでに同じルートを持っていますが、別の別名を持つ

試してみてください
get "contact-us" => "contact_us/contacts#new", as: :contact_us #line#11 

私は別のパスと異なるエイリアスで同じルートを追加しました。

3

をあなたが唯一getmatchを交換する必要があり、それを同じように行うことができます。それはもはやどの動詞とも一致することは許されません。

resources :contacts, 
    :controller => 'contact_us', 
    :only  => [:new, :create] 
get 'contact_us' => 'contact_us#new' 

編集

私たちはチャットでこれを解決しました。​​との衝突だったことが判明しました。

+0

はい私はそれをしましたが、別のエラーを投げます。質問の更新を確認してください。 –

+0

それはとても厄介です。私は新しい小さなテストプロジェクトを始めました。これは、ヒッチなしで働いた... – Albin

+0

それはルートファイル全体ですか? – Albin

2

ルートで:asを追加するこの

resources :contacts, controllers: 'contact_us', :only => [:new, :create] 

root :to => 'contact_us#new' 
# or without root 
match 'contact_us' => 'contact_us#new', via: [:get] 
+0

質問の更新をご確認ください –

+0

@ riksof-zeeshan:上記のコードを試しましたか? –

+0

はい:私は 'contact_us' => 'contact_us#new'を経由して:[:get] '経由でこのエラーをスローします。無効なルート名、既に使用中です: 'contact_us' –

関連する問題