【发布时间】:2016-08-17 12:10:00
【问题描述】:
我想我已经知道答案了,但我想我会发布这个来帮助遇到这个问题的其他人,因为我在其他任何地方都找不到这个帖子。
我有一个典型的 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 上传时的参数安全检查(我应该在后台通过 JSON 记录这一点)。
我确信我可以在这里找到一些条件来允许正常的 html 帖子,但我想确认我没有遗漏更优雅的东西,或者我在某处遗漏了配置选项。
所以要明确我的问题是:
1.) 在这种情况下,我是否遗漏了此处记录的内容?
2.) 是否有比基本检查更优雅的解决方案/安全解决方案来查看请求是否为 JSON 等?
更新
忘了提到我也在使用 Dropzone 进行上传。
【问题讨论】:
标签: ruby-on-rails carrierwave dropzone.js actiondispatch