私の Rails アプリのすべてのページのヘッド セクションには、次の 2 つのメタ タグがあります。
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="027GUZBeEkmv..." />
authenticity_token
部分的なレンダリングを行わないフォームには隠しフィールドがある
<input type="hidden" name="authenticity_token" value="D5TddQruJppDD3..." />
しかし、次のようにフォームを単純にロードすると、このフィールドは失われます。
<%= render 'shared/comment_form' %>
これは想定された動作ですか? 手動で追加する必要がありますか?authenticity_token
その場合、どのように検証しますか?
編集:
共有/_comment_form.html.erb
<%= form_for([@post, @comment], :html => { :onsubmit => "validateCommentForm(event)" }, remote:true) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="field">
<%= f.text_area :content, placeholder: "Add to the article. Make it be more" %>
</div>
<%= f.submit "Save", class: "btn btn-info" %>
<% end %>
また、<input type="hidden" name="authenticity_token" id="authenticity_token" value="ANYTHING" />
そのフォームに追加すると、情報が投稿され、新しいレコードが作成されます...
ベストアンサー1
あなたの場合、2つの方法があります:
authenticity_token: true
フォームオプションに追加次のように、フォームに authenticity_token フィールドを手動で追加します。
<%= hidden_field_tag :authenticity_token, form_authenticity_token -%>