3

Rails 4、Active Admin、および Paperclip を使用して、has_many 画像の関連付けをセットアップしています。フォームの has_many 部分を生成すると、エラーが発生し続けます。現在、nil:NilClass に対して未定義のメソッド `+' を取得しています。これが私のコードです:

ニュースモデル

class News < ActiveRecord::Base
    validates :body, presence: true
    validates :title, presence: true, length: { maximum: 140 }

    has_many :news_images, dependent: :destroy
end

ニュース画像モデル

class NewsImage < ActiveRecord::Base
    belongs_to :news



    has_attached_file :photo, styles: {
        small: "150x150>",
        medium: "300x300>",
        large: "600x600>"
    }
    validates_attachment_presence :photo
    validates_attachment_size :photo, less_than: 5.megabytes
end

管理コード

ActiveAdmin.register News do
    index do
    column :title
    default_actions
  end

  form multipart: true do |f|
    f.semantic_errors *f.object.errors.keys

    f.inputs "News Details" do
      f.input :title
      f.input :body, :as => :rich
    end

    f.has_many :news_images do |p|

    end

    f.actions
  end

  controller do
    def permitted_params
      params.permit news: [:title, :body, news_images: [:photo]]
    end
  end
end

理想的には、ユーザーが複数の画像をフォームにアップロードできるようにしたいと考えています。誰でもこの問題の経験がありますか?

スタックトレースは、insert_tag renderer_for(:new)どれがトリップされているかを示していますf.has_many :news_images do |p|

4

2 に答える 2

3

したがって、問題はニュースモデルにありました。私は、accepts_nested_attributes_for が強力なパラメーターの追加で非推奨になったと思っていましたが、これをニュース モデルに追加して問題を修正したのは間違っていたと思います

accepts_nested_attributes_for :news_images,
                            :reject_if => lambda { |attributes| attributes[:photo].blank? },
                            :allow_destroy => true
于 2013-10-24T18:29:53.460 に答える
0

最近修正された Paperclip 4.1 には別のバグがありました: https://github.com/thoughtbot/paperclip/issues/1457

これを追跡するのにかなりの時間を費やしましたが、最終的には formtastic と paperclip 4.1 の間の接続を見つけることができました。

私にとってうまくいった解決策は、次のように、Gemfile で paperclip の master ブランチに切り替えることでした。

gem 'paperclip', github: 'thoughtbot/paperclip'
于 2014-03-17T01:03:30.460 に答える