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!」を設定したことがないにもかかわらず、アセットフォームを使用してアップロードできるようになりました。ログアウトして再度アップロードしようとすると、同じエラーが発生します。
その情報があれば、devise がアプリでアップロード フォームを自動的に使用できないようにする理由はありますか?
<%= 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 %>