文件上载字段导致ActionController :: InvalidAuthenticityToken异常

cro*_*don 25 ruby-on-rails paperclip simple-form

使用rails 4,并尝试使用simple_form和paperclip将文件字段添加到现有表单.

这是表单的关键部分:

<%= simple_form_for(@employee, html: { class: 'form-horizontal requires', multipart: true}, remote: true) do |f| %>

    <%= f.input :avatar %>

<% end %>
Run Code Online (Sandbox Code Playgroud)

一切正常,除非我实际提交带有上传文件的表单.然后,我明白了:

ActionController::InvalidAuthenticityToken in EmployeesController#update
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

Wil*_*ckl 20

我遇到了同样的问题.<%= token_tag form_authenticity_token %>不适合我.

安装gem remotipart解决了我的问题.remotipart

  • 如果您尝试使用remote:true提交文件并希望使用js.erb文件进行响应,则这是实际答案.安装remotipart宝石(非常快速和简单),它就像一个魅力. (5认同)

Hun*_*ter 20

最简单的解决方案就是添加authenticity_token: true到您的表单中.像这样:

<%= form_for @employee, html: { class: 'form-horizontal requires'}, multipart: true, remote: true, authenticity_token: true  do |f| %>
  <%= f.input :avatar %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

  • 添加`authenticity_token:true`就像一个魅力:-) (2认同)
  • 警告:“ remote:true”选项将被忽略,并且表单以“ html”格式提交。如果要以js形式提交表单,请查看[William](http://stackoverflow.com/a/21029501/1079609)答案。 (2认同)