Tôi là một số lời khuyên liên quan đến xử lý dữ liệu biểu mẫu lồng nhau và tôi sẽ rất biết ơn đối với bất kỳ thông tin chi tiết nào.CarrierWave và các biểu mẫu lồng nhau lưu đối tượng ảnh trống nếu ảnh: tiêu đề được bao gồm trong biểu mẫu
Vấn đề là tôi không chắc chắn 100% tại sao tôi yêu cầu mã sau đây trong mô hình của tôi
accepts_nested_attributes_for :holiday_image, allow_destroy: true, :reject_if => lambda { |a| a[:title].blank? }
Tôi không hiểu tại sao tôi yêu cầu để nguyên vẹn trên vào hiệp hội accepts_nested_attributes_for tôi:
:reject_if => lambda { |a| a[:title].blank? }
Nếu tôi xóa điều này: reject_if lambda, nó sẽ lưu một đối tượng ảnh kỳ nghỉ trống trong cơ sở dữ liệu. Tôi đoán vì nó lấy trường tiêu đề từ biểu mẫu dưới dạng một chuỗi rỗng?
Tôi đoán câu hỏi của mình là, tôi đang làm điều này đúng hay có cách nào tốt hơn trong hình thức lồng nhau này nếu tôi muốn mở rộng mô hình HolidayImage của mình để bao gồm nhiều chuỗi hơn như mô tả, ghi chú?
Xin lỗi Nếu tôi không thể gọn gàng hơn.
Ứng dụng kỳ nghỉ đơn giản của tôi.
# 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
Tôi đang sử dụng CarrierWave để tải lên hình ảnh.
# holiday_image.rb
class HolidayImage < ActiveRecord::Base
belongs_to :holiday
attr_accessible :holiday_id, :image, :title
mount_uploader :image, ImageUploader
end
Bên _form của tôi một phần có một khối 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 %>
Cảm ơn một lần nữa vì sự kiên nhẫn của bạn.
Tôi có cùng vấn đề – smoothdvd