リライト
私は2つのモデルを持っています。アプリと会話。アプリには複数の会話が含まれています
resources :apps do
resources :conversations
end
タグのフォームを使用して2つのフォームを持つ単一のビューがあります。最初のフォームは、アプリ モデルを更新するためのものです。もう 1 つは、会話を作成または更新するためのものです。
私が抱えている問題は、form_for タグを使用すると、結果の html が _method 入力を生成しないことです。
EG 会話フォーム。
<form accept-charset="UTF-8" action="/apps/50c87614e976a31149000009/conversations" class="new_conversation ng-pristine ng-valid" id="new_conversation" method="post">
<div style="margin:0;padding:0;display:inline">
<input name="utf8" type="hidden" value="✓">
<input name="authenticity_token" type="hidden" value="RqwwgBb737uuwg3PgRS+z0qlOP1aDqWe+2hrEeU0KHk=">
</div>
アプリフォーム
<form accept-charset="UTF-8" action="/apps/50c87614e976a31149000009" class="edit_app ng-pristine ng-valid" enctype="multipart/form-data" id="edit_app_50c87614e976a31149000009" method="post">
<div style="margin:0;padding:0;display:inline">
<input name="utf8" type="hidden" value="✓">
<input name="_method" type="hidden" value="put">
<input name="authenticity_token" type="hidden" value="RqwwgBb737uuwg3PgRS+z0qlOP1aDqWe+2hrEeU0KHk="></div>
これが問題を抱えているため、ここでは会話モデルに焦点を当てましょう。
上記の html から、会話フォームが投稿要求を送信する必要があることが予想されます。残念ながら、Rails アプリで受信すると、Puts リクエストとして扱われます。
form_for のドキュメントを見ると、form_for が _method という非表示の入力フィールドを設定することになっていることがわかります。
Conversation フォームを見て App フォームと比較すると、会話に _method 属性がないことがわかります。これがなぜなのか、私には判断できません。
これが無視されている理由は誰にもありますか? または、会話フォームを送信すると、投稿ではなくプットが送信されるのはなぜですか?