我正在寻求有关处理嵌套表单数据的一些建议,我将非常感谢任何见解。
问题是我不是 100% 确定为什么在我的模型中需要以下代码
accepts_nested_attributes_for :holiday_image, allow_destroy: true, :reject_if => lambda { |a| a[:title].blank? }
我不明白为什么我需要处理我的accepts_nested_attributes_for 关联:
:reject_if => lambda { |a| a[:title].blank? }
如果我删除这个 :reject_if lambda,它将在数据库中保存一个空白的假日照片对象。我想是因为它将表单中的 :title 字段作为空字符串?
我想我的问题是,如果我想扩展我的 HolidayImage 模型以包含更多字符串,如描述、注释,我这样做是对的还是在嵌套表单中有更好的方法?
对不起,如果我不能更简洁的话。
我的简单假期应用程序。
# holiday.rb
class Holiday < ActiveRecord::Base
has_many :holiday_image
accepts_nested_attributes_for :holiday_image, allow_destroy: true, :reject_if => lambda { |a| a[:title].blank? }
attr_accessible :name, :content, :holiday_image_attributes
end
我正在使用 CarrierWave 进行图像上传。
# holiday_image.rb
class HolidayImage < ActiveRecord::Base
belongs_to :holiday
attr_accessible :holiday_id, :image, :title
mount_uploader :image, ImageUploader
end
在我的 _form 部分里面有一个 field_for 块
<h3>Photo gallery</h3>
<%= f.fields_for :holiday_image do |holiday_image| %>
<% if holiday_image.object.new_record? %>
<%= holiday_image.label :title, "Image Title" %>
<%= holiday_image.text_field :title %>
<%= holiday_image.file_field :image %>
<% else %>
Title: <%= holiday_image.object.title %>
<%= image_tag(holiday_image.object.image.url(:thumb)) %>
Tick to delete: <%= holiday_image.check_box :_destroy %>
<% end %>
再次感谢您的耐心等待。