尝试使用carrierwave上传文件时出现错误:
ActionController::InvalidAuthenticityToken in AssetsController#create
脚步:
1. rails new testapp
2. Add devise and carrierwave to Gemfile
3. rails g devise:install
4. rails g scaffold asset path:string #will mount uploader to path
5. rails g uploader asset
6. rake db:migrate
7. Edit model/asset.rb add mount_uploader :path, AssetUploader
8. modify asset form to use multipart and file_field for :path
因此,通过基本设置,如果我转到 assets/new,我将看到新的资产表单,使用文件字段选择要上传的图像,当我保存时,我会收到上述错误。我从未创建过设计用户模型,也从未添加过任何 before_filter authenticate_user!给控制器。
它不会将我重定向到登录页面,但会引发错误。因此,我尝试使用“用户”创建设计模型并注册并登录,即使我从未设置过“before_filter authenticate_user!”,我现在也可以使用资产表单进行上传。如果我注销并尝试再次上传,我会收到同样的错误。
那么有了这些信息,为什么设计会自动阻止我在我的应用程序中使用上传表单?
<%= form_for(@asset, :html => { :multipart => true}) do |f| %>
<% if @asset.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@asset.errors.count, "error") %> prohibited this asset from being saved:</h2>
<ul>
<% @asset.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :path %><br>
<%= f.file_field :path, :multiple => true %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>