我想我已经知道答案了,但我想我会发布这个来帮助其他人遇到这个,因为我无法在其他任何地方找到这个。
我有一个典型的Rails模型,并添加了Carrierwave上传器。
当我上传时,我收到此错误:
Started POST "/model/2/uploads" for ::1 at 2016-04-23 13:45:23 -0600
Processing by UploadsController#create as JSON
Parameters: {"utf8"=>"✓", "authenticity_token"=>"PPrsIJu4EI5R47VzbfBknaq7QPRpcjsZzCVTkWn2BEEYVc36CQf5rnePTBaVOy6VOX47M4GcrdGCDmH7g8vCQw==", "upload"=>#<ActionDispatch::Http::UploadedFile:0x007fa1b1ea9368 @tempfile=#<Tempfi...
NoMethodError - undefined method `permit' for #<ActionDispatch::Http::UploadedFile:0x007fa1b1ea9368>
看起来像这篇文章:
undefined method `permit' for #<String:0x007f66ec6ff180> ruby on rails
我无法(我相信现在有人会找到它)在任何需要修改控制器以跳过正常情况的地方找到它:
def upload_params
# params.require(:upload).permit(:file, :notes)
params.require(:upload)
end
通过CW上传时的Params安全检查(我应该在后台通过JSON注意这一点)。
我相信我可以在这里找出一些条件允许正常的html帖子,但我想确认我没有遗漏更优雅的东西或者我在某处错过了配置选项。
所以要清楚我的问题是:
1。)在这种情况下,我错过了这里记录的内容吗?
2。)是否有更优雅的解决方案/安全解决方案与基本检查相比,以查看请求是否为JSON等?
更新
忘记提及我也使用Dropzone进行上传。
答案 0 :(得分:2)
+1 @ @ anthony-e让我想到这个。 Dropzone.js是个问题。我无法更改DS配置中的paramName:
。我应该paramName: 'upload'
时paramName: 'upload[file]'
。然后DS.js在我的upload
参数中发送了ActionDispatch。
答案 1 :(得分:1)
params[:upload]
不是典型的HashWithIndifferentAccess
,使用params.permit(:upload, etc...)
应该有效。