Active Admin Rails 4有很多

时间:2013-10-23 23:23:32

标签: ruby-on-rails paperclip activeadmin formtastic

我正在使用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|

2 个答案:

答案 0 :(得分:3)

问题在于新闻模式。我认为accepted_nested_attributes_for已被弃用,增加了强大的参数,但我想错误地将其添加到新闻模型中解决了我的问题

accepts_nested_attributes_for :news_images,
                            :reject_if => lambda { |attributes| attributes[:photo].blank? },
                            :allow_destroy => true

答案 1 :(得分:0)

最近修复了Paperclip 4.1中的另一个错误:https://github.com/thoughtbot/paperclip/issues/1457

我花了很多时间跟踪这个,但最终能够找到formtastic和paperclip 4.1之间的联系。

对我有用的解决方案是在我的Gemfile中切换到paperclip的主分支,如下所示:

gem 'paperclip', github: 'thoughtbot/paperclip'