2016-08-07 8 views
0

AWSとPaperclipを1つのモデルで正常に動作させました。別のモデルに追加しようとしています。現在、私は私のプロジェクト/フォームでのコードのこのビットにundefined method "fields" for nil:NilClassエラーを取得しています:私のプロジェクトのコントローラでPaperclip:未定義メソッド `fields for nil:@ s3_direct_post.fieldsの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()

残念ながら、私はこのエラーで多くのスレッドを見つけることはできません。決定的な解決策はありません。このコードは現在、他のモデルでもうまく動作していますが、プロジェクトコントローラ(のみ)のメソッドが読み込まれていないようです。これは、ユーザーコントローラとまったく同じコードと設定です。これをどうやって解決するのですか?

いくつかの追加情報:

  • 私は、設定/初期化子/ aws.rb application.jsでコードを再利用しています、と私は(今のところ)複数のコントローラに同じバケットを使用しています、だけでなく私はペーパークリップ/ AWSは、私は私のサーバー、私はレールに4.2.3を使用しています数回

  • を再起動した

  • 作業したモデルのためにやったのと同じAWSの資格として、5.0およびAWS-SDKをクリップ2.3

追加情報が必要です。私が提供したいと思います。感謝:)

答えて

0

回答:私は私のコントローラで私before_actionを設定するのを忘れ

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

関連する問題