Rails 4. 部分レンダリングされたフォームに authenticity_token を追加するにはどうすればいいですか? 質問する

Rails 4. 部分レンダリングされたフォームに authenticity_token を追加するにはどうすればいいですか? 質問する

私の 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つの方法があります:

  1. authenticity_token: trueフォームオプションに追加

  2. 次のように、フォームに authenticity_token フィールドを手動で追加します。

<%= hidden_field_tag :authenticity_token, form_authenticity_token -%>

おすすめ記事