10

Rails 4のPaperclipアップロードで問題が発生しました - ForbiddenAttributesError(強力なパラメータ検証)で失敗しました。最新のクリップと4つの宝石を用意してください。Rails 4のペーパークリップ - 強いパラメータ禁止された属性エラー

私はモデルで「アップロード」添付ファイルでモデルの「イメージ」を持っている:

has_attached_file :upload, :styles => { :review => ["1000x1200>", :png], :thumb => ["100x100>", :png]}, :default_url => "/images/:style/missing.png" 

画像モデルは、足場を使用して作成された、と私は、クリップの移行を追加しました。部分的なフォームは

f.file_field :upload 

フォームがアップロードを含む画像のparamで、クリップのparamsの典型的なセットと思われるものを生成を使用するように更新されました。私はまた、イメージモデルでtransaction_idを渡しているので、許可する必要があります。しかし、それはイメージとトランザクションIDです。

私は私のポストをホワイトリストに登録して、私のコントローラで次のように書くことができると期待 - しかし、それは失敗しました:

def image_params 
    params.require(:image).permit(:transaction_id, :upload) 
end 

だから私はより明確になった - しかし、それはあまりにも失敗しました:

def image_params 
    params.require(:image).permit(:transaction_id, :upload => [:tempfile, :original_filename, :content_type, :headers]) 
end 

ForbiddenAttributesErrorが開発環境で失敗していることをRails 4が私に見せてくれないことが少し不満です。エラーを表示するはずですが、開発を容易にする良いパッチになります。それとも誰もが私が紛失しているものを手に入れているのかもしれません!助けてくれてありがとう。

答えて

9

私はここで何が起こったのか理解しています。他人を助けてくれることを望んでこれを残します。私はレール3プロジェクトからコードを移植して画像を作成した行逃した。(私は信じて)これは間違っているレール4で

@image = current_user.images.new(params[:image]) 

を。

@image = current_user.images.new(image_params) 

に更新され、私の問題が解決しました。

+3

これを機能させるには、何をparams.permit()に入れたのですか? – adamyonk

+3

私の場合、私はペーパークリップの添付ファイル 'image_file'でモデル "Image"を持っていました。 paperclipの移行では、image_file_file_nameなどのようにdb内にいくつかの列が作成されますが、params.require(:image).permit(:image_file)だけでクリップを魔法に使うことができます。 – Eskim0

+1

ありがとう!それは直感的ではありませんが、それは動作します:) – duhaime

1

あなたの最初のものがうまくいったようです。これは私が自分のプロジェクトに使うものです。

class GalleriesController < ApplicationController 

    def new 
    @gallery = Gallery.new 
    end 

    def create 
    @user.galleries.new(gallery_params) 
    end 

    private 

    #note cover_image is the name of paperclips attachment filetype(s) 
    def gallery_params 
    params.require(:gallery).permit(:cover_image) 
    end 
end 
関連する問題