注: Routing From the Inside Out と、ルーティングに関する Engine Yard のブログ投稿を読みました。
私はファンタジースポーツリーグを構築しています.7つの基本的な休息操作をサポートするリーグモデルがあり、それらはすべて正常に動作します.
次のroutes.rbを追加しました
resources :leagues do
member do
get :invite
post :sendem
end
ファイルの後半に、基本的なアクションのリソース :leagues があります。
ルートをかき集めると、次のことがわかります。
invite_league GET /leagues/:id/invite(.:format) {:action=>"invite", :controller=>"leagues"}
sendem_league POST /leagues/:id/sendem(.:format) {:action=>"sendem", :controller=>"leagues"}
これは私が期待するものです。リーグ コントローラには 2 つの関数があります。電子メール アドレスを収集するためのフォームを作成する「invite」と、メーラーを呼び出して実際に招待状を送信する「sendem」です。
/league/:id/invite の get は実際にフォームを生成します。私が使用しているフォームタグは次のようになります。
<%= form_tag(sendem_league_path, :method => "post") do %>
それでも、レンダリングされる HTML は次のようになります。
<form accept-charset="UTF-8" action="/leagues/1" class="edit_league" id="edit_league_1" method="post">
したがって、送信時に完全に間違った PUT が生成されます。( sendem 関数に投稿する必要があります。) routes ファイルへの私の変更は、一般的なリソースの :leagues 行の上に表示されるため、優先度が高くなるはずです。
私が見逃した非常に単純なものがあると確信していますが、アイデアがありません。(そして髪)。