为什么向我的表单添加文件字段会导致 "can't verify CSRF token..."
Why does adding a file field to my form cause "can't verify CSRF token..."
我(可能)有一个简单的问题,我似乎无法解决。
我有一个简单的表单来编辑我的 rails 应用程序中的 tenant
对象。它按预期工作。
但是,当我将 <%= f.file_field :logo %>
行添加到我的表单中时,出现 Can't verify CSRF token authenticity.
错误。
我的问题:
为什么添加 file_field 会导致此 CSRF 错误?
相关表格:
....
<%= form_for(tenant,:html=>{:id=>"your_form_id",:multipart => true,:remote=>true}) do |f| %>
<%= render 'errors/form_errors', object: @tenant %>
<div id="login-form">
<div class="field">
<%= f.text_field :name, placeholder: "name" %>
</div>
</br>
<div class="field">
<%= f.email_field :email, placeholder: "email" %>
</div>
</br>
<div class="field">
<%= f.phone_field :phone, id: "phoneNumber", placeholder: "(XXX) XXX-XXXX", onkeypress:"return numberPressed(event);" %>
</div>
</br>
<div class="field">
<%= f.file_field :logo %> //WORKS FINE WITHOUT THIS FIELD!
</div>
<div class="actions">
<%= f.submit id: "login-button", class: "btn-outline-primary", value: "Save",'data-disable-with':"Wait..." %>
</div>
</div>
<% end %>
....
此外,这是调出表单的代码。不确定它是否有任何相关性。
这是调出我的表单的文件中的代码:edit.js.erb
closeLightbox();
$("body").prepend('<%= escape_javascript(render 'edit', tenant: @tenant) %>');
编辑:我找到了解决方案,尽管我不太明白为什么有必要这样做。请参阅下面的答案。
我在另一个线程中发现了这个,它解决了我的问题:
我在表单中添加了以下内容:
<%= token_tag(nil) %>
我(可能)有一个简单的问题,我似乎无法解决。
我有一个简单的表单来编辑我的 rails 应用程序中的 tenant
对象。它按预期工作。
但是,当我将 <%= f.file_field :logo %>
行添加到我的表单中时,出现 Can't verify CSRF token authenticity.
错误。
我的问题: 为什么添加 file_field 会导致此 CSRF 错误?
相关表格:
....
<%= form_for(tenant,:html=>{:id=>"your_form_id",:multipart => true,:remote=>true}) do |f| %>
<%= render 'errors/form_errors', object: @tenant %>
<div id="login-form">
<div class="field">
<%= f.text_field :name, placeholder: "name" %>
</div>
</br>
<div class="field">
<%= f.email_field :email, placeholder: "email" %>
</div>
</br>
<div class="field">
<%= f.phone_field :phone, id: "phoneNumber", placeholder: "(XXX) XXX-XXXX", onkeypress:"return numberPressed(event);" %>
</div>
</br>
<div class="field">
<%= f.file_field :logo %> //WORKS FINE WITHOUT THIS FIELD!
</div>
<div class="actions">
<%= f.submit id: "login-button", class: "btn-outline-primary", value: "Save",'data-disable-with':"Wait..." %>
</div>
</div>
<% end %>
....
此外,这是调出表单的代码。不确定它是否有任何相关性。
这是调出我的表单的文件中的代码:edit.js.erb
closeLightbox();
$("body").prepend('<%= escape_javascript(render 'edit', tenant: @tenant) %>');
编辑:我找到了解决方案,尽管我不太明白为什么有必要这样做。请参阅下面的答案。
我在另一个线程中发现了这个,它解决了我的问题:
我在表单中添加了以下内容:
<%= token_tag(nil) %>