私はRails 4.xベータで遊んでいて、carrierwaveで動作するネストされた属性を取得しようとしていました。私がやっていることが正しい方向であるかどうかは分かりません。周りを探索した後、最終的にレールのソースと強力なパラメータを見て、私は以下のノートを見つけました。Rails 4.0 Strong Parametersハッシュを指すキーを持つネストされた属性
のParamの例:
{"utf8"=>"✓",
"authenticity_token"=>"Tm54+v9DYdBtWJ7qPERWzdEBkWnDQfuAQrfT9UE8VD=",
"screenshot"=>{
"title"=>"afs",
"assets_attributes"=>{
"0"=>{
"filename"=>#<ActionDispatch::Http::UploadedFile:0x00000004edbe40
@tempfile=#<File:/tmp/RackMultipart20130123-18328-navggd>,
@original_filename="EK000005.JPG",
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"screenshot[assets_attributes][0][filename]\"; filename=\"EK000005.JPG\"\r\nContent-Type: image/jpeg\r\n">
}
}
},
"commit"=>"Create Screenshot"}
# Note that if you use +permit+ in a key that points to a hash, # it won't allow all the hash. You also need to specify which # attributes inside the hash should be whitelisted.
だから、あなたが持っている内のすべての単一のすべての単一の属性を指定する必要がありますと言って、私は次のことを試してみましたその
コントローラ
def screenshot_params
params.require(:screenshot).permit(:title,
:assets_attributes => [:filename => [:@tempfile,:@original_filename,:@content_type,:@headers]
上記の「作業」されていません(そのトリガーないcarrierwave)しかし、私はもはや取得していますエラー(許可されていないパラメータ:ファイル名)の標準的なネストされた例を使用しているとき、私は元が見つかりました:
def screenshot_params
params.require(:screenshot).permit(:title, assets_attributes: :filename)
もし誰かがそれを助けることができたらそれはすばらしいことだ。私は、ハッシュを指し示すキーを入れ子にした例を見つけることができませんでした。
もう一度お手数をおかけください。私はやります、少なくとも、私は今、それを取り巻く馬鹿げた方法を持っています。 – John
これはまだレール4.0.0rc1の場合(少なくとも私にとっては)そうであると思われます。 – courtsimas
私はcarrierwaveを使用しているときにこれに問題があります。連絡あった? – ctilley79