Я играл с Rails 4.x beta и пытался вставить вложенные атрибуты, работающие с носителем. Не уверен, что то, что я делаю, - правильное направление. После поиска, а затем, в конце концов, глядя на источник рельсов и сильные параметры, я нашел следующие примечания.
# 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.
Итак, в его высказывании вам нужно указать каждый отдельный атрибут внутри, я пробовал следующее:
Пример параметра:
{"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"}
контроллер
def screenshot_params
params.require(:screenshot).permit(:title,
:assets_attributes => [:filename => [:@tempfile,:@original_filename,:@content_type,:@headers]
Вышеупомянутое не работает (его не запускает несущую волну), но я больше не получаю ошибок (Unpermitted parameters: filename) при использовании стандартных вложенных примеров, которые я нашел ex:
def screenshot_params
params.require(:screenshot).permit(:title, assets_attributes: :filename)
Если кто-то может помочь, это будет здорово. Я не смог найти пример с вложенным ключом, который указывает на хэш.