回形针:未定义的方法`字段' for nil:@ s3_direct_post.fields的NilClass

时间:2016-08-07 20:27:39

标签: amazon-web-services amazon-s3 paperclip

我让AWS和Paperclip在一个模型中成功运行,现在我正在尝试将其添加到另一个模型中。目前,我的项目/表单中的这段代码出现undefined method "fields" for nil:NilClass错误:

  <%= form_for @project, html: { multipart: true, class: "directUpload", data: { 
    'form-data' => (@s3_direct_post.fields), // <-- err: @s3_direct_post is nil
    'url' => @s3_direct_post.url, 
    'host' => URI.parse(@s3_direct_post.url).host } 
    } do |f| %>

在我的项目控制器中,我已经包含了这个私有方法:

    def set_s3_direct_post
        @s3_direct_post = S3_BUCKET.presigned_post(key: "uploads/#{SecureRandom.uuid}/${filename}", success_action_status: '201', acl: 'public-read')
    end 

并在我的控制器:image

中包含params.require()

不幸的是,我没有在SO上发现这个错误的很多线程,没有一个有确凿的解决方案。这个相同的代码目前在另一个模型中正常工作,但似乎项目控制器(仅)中的方法没有被读取?它与用户控制器完全相同的代码和设置。我该如何解决这个问题?

其他一些信息:

  • 我正在重用application.js,config / initializers / aws.rb中的代码,我正在为多个控制器(现在)使用相同的存储桶,以及与我所做的相同的AWS凭据paperclip / aws工作的模型

  • 我已经重启了我的服务器几次

  • 我使用的是rails 4.2.3,paperclip 5.0和aws-sdk 2.3

我将很乐意提供所需的任何其他信息。谢谢:))

1 个答案:

答案 0 :(得分:0)

答案:我忘了在控制器中设置我的before_action

before_action :set_s3_direct_post, only: [:new, :edit, :create, :update]