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