我让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
我将很乐意提供所需的任何其他信息。谢谢:))
答案 0 :(得分:0)
答案:我忘了在控制器中设置我的before_action
before_action :set_s3_direct_post, only: [:new, :edit, :create, :update]