【问题标题】:File upload field causing ActionController::InvalidAuthenticityToken exception文件上传字段导致 ActionController::InvalidAuthenticityToken 异常
【发布时间】:2013-09-06 22:25:03
【问题描述】:

使用 rails 4,并尝试使用 simple_form 和回形针将文件字段添加到现有表单。

这是表单的关键部分:

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

    <%= f.input :avatar %>

<% end %>

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

ActionController::InvalidAuthenticityToken in EmployeesController#update

我在这里做错了什么?

【问题讨论】:

  • 我相信你的答案是 [这里][1] 看起来像新的 rails 4。[1]:stackoverflow.com/questions/16258911/rails-4-authenticity-token
  • 问题在于将 multipart 与 remote: true 结合起来。这将强制表单提交为 HTML 而不是 JS。删除 multipart 将强制它为 JS,但是您无法上传文件。显然,这是一个错误,remotipart gem 显然是一个修复程序。

标签: ruby-on-rails paperclip simple-form


【解决方案1】:

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

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

【讨论】:

  • 添加 authenticity_token: true 就像一个魅力:-)
  • 请注意remote: true 选项将被忽略,表单将作为html 提交。如果您想以js 提交表单,请查看William 答案。
【解决方案2】:

我遇到了同样的问题。 &lt;%= token_tag form_authenticity_token %&gt; 对我不起作用。

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

【讨论】:

  • 如果您尝试使用 remote: true 提交文件并希望使用 js.erb 文件进行响应,这就是实际答案。安装 remotipart gem(非常快速和简单),它就像一个魅力。
猜你喜欢
  • 2018-11-02
  • 2019-12-25
  • 2011-10-23
  • 2011-03-22
  • 2014-10-11
  • 1970-01-01
  • 2018-11-27
  • 2019-12-05
  • 2015-11-23
相关资源
最近更新 更多