2010-11-25 11 views
1

コントローラーを持っている場合、新たに追加されたメソッドでURLを使ってアクセスするにはどうすればいいですか?私はルートを持っているので、私は混乱していますruby​​ on railsでコントローラーを追加してアクセスする

理由は、私が

mysite.com/assignments/other_method 

をすればそれは

map.connect 'assignments/:external_id.:format', :controller => "assignments", :action => "show", :external_id => /\d{6}/ 

私がassignmentsコントローラ内の他のメソッドにアクセスすることができないようだ、ですother_methodは、上記のルートエントリで指定されているように、私がshowコントローラに渡すIDであると仮定します。

編集:

私が先頭にこれを追加しました:

map.connect 'assignments/send/', :controller => "assignments", :action => "send" 

となりました。このエラーを取得しています:assignments/sendため

ArgumentError in AssignmentsController#show 

ルートは任意のための最初のdeclrationです割り当てコントローラ

+0

「代入/送信/」の後に必要な引数がない可能性があります。おそらく「代入/送信/:id」が機能しますか?割り当てモデルを選択するには、ある種の変数で終わるはずです。 – dain

+0

私はこの場合モデルを使用していません。より具体的には、私はフォームからいくつかの値をとり、そこから電子メールを生成しています。 – tipu

答えて

1

あなたのルーティングテーブルはあなたの最も一般的なケースとして

map.connect ':controller/:action/:id' 
    map.connect ':controller/:action/:id.:format' 

で終了するには、このため

map.connect 'assignments/:external_id.:format', :controller => "assignments", :action => "show", :external_id => /\d{6}/ 

map.connect 'assignments/send/', :controller => "assignments", :action => "send" 

でそれを持っている必要があります。

0

正しいルートを指定するだけで最初のマッチが実行されるように、マッピングが上から下に評価されることを覚えておいてください。

+0

したがって、最も「漠然とした」ルートを最下部に配置する必要がありますか? – tipu

+0

正確には、通常はマップだけです。リソース:コントローラ – dain

関連する問題