RESTの「new」と同じような動作をする「campaign」というカスタムアクションを同じコントローラーに追加したいのですが、目的が違うので分けたいと思いました。このキャンペーン フォームには追加のフィールドがいくつかあるためです。もう 1 つの方法は、追加のパラメーターを「新規」アクションに渡し、通常の「新規」アクションとカスタム「キャンペーン」で異なるテンプレートをレンダリングすることです。でも、なぜうまくいかなかったのかを知りたい。
したがって、次のルートを思いつきます (「メッセージ」は、「新規」アクションと「キャンペーン」アクションの両方を持つコントローラーです)。
get 'users/:user_id/messages/campaign', as: :campaign_user_message
また
resources :users do
resources: messages do
member do
get 'campaign'
end
end
end
コンソール出力で、これを行うため、 ActiverRecord:RecordNotFound を取得しています。
Started GET "/users/1/messages/campaign" for 127.0.0.1 at 2012-12-22 00:14:38 -0800
Processing by MessagesController#show as HTML
Parameters: {"user_id"=>"1", "id"=>"campaign"}
私はこの方法でアクションを呼び出しています:
link_to campaign_user_message_path(@user)