Carrierwave: NoMethodErroR语言 #<ActionDispatch...的未定义方法"permit">



我想我已经知道这里的答案了,但我想我会发布这个来帮助遇到这个问题的其他人,因为我在其他任何地方都找不到这个帖子。

我有一个典型的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>

它看起来像这篇文章:

#<String:0x007f66ec6ff180> Ruby on Rails的未定义方法"permit"

我无法(我相信现在有人会找到它)在您需要修改控制器以跳过正常操作的任何地方找到它:

    def upload_params
#      params.require(:upload).permit(:file, :notes)
      params.require(:upload)
    end

当您通过 CW 上传时,参数会进行安全检查(我应该在后台通过 JSON 注意这一点)。

我确信我可以在这里找出一些条件来允许正常的 html 帖子,但我想确认我没有错过更优雅的东西,或者我在某处缺少配置选项。

所以要清楚,我的问题是:

1.)在这种情况下,我是否遗漏了此处记录的内容?

2.) 是否有更优雅的解决方案/安全解决方案与基本检查以查看请求是否为 JSON 等?

更新

忘了说我也在使用Dropzone进行上传。

+1 到 @anthony-e 让我思考这个问题。 Dropzone.js是问题所在。 我无法更改 DS 配置中的paramName:。 我paramName: 'upload'什么时候应该paramName: 'upload[file]'. 然后,DS.js 在我的upload参数中发送 ActionDispatch。

params[:upload]不是典型的HashWithIndifferentAccess,使用params.permit(:upload, etc...)应该可以。

相关内容

  • 没有找到相关文章

最新更新