2011-02-10 28 views
10

tôi cóaccepts_nested_attributes_for bỏ qua các giá trị trống

class Profile 
    has_many :favorite_books, :dependent => :destroy 
    has_many :favorite_quotes, :dependent => :destroy 

    accepts_nested_attributes_for :favorite_books, :allow_destroy => true 
    accepts_nested_attributes_for :favorite_quotes, :allow_destroy => true 
end 

Tôi có một hình thức năng động, nơi bạn nhấn '+' để thêm textareas mới để tạo ưa thích mới. Những gì tôi muốn làm là bỏ qua những cái trống, tôi thấy điều này khó khăn hơn để sắp xếp thông qua bộ điều khiển cập nhật hơn là một thuộc tính không lồng nhau.

Điều tôi tạm thời là hack trong cuộc gọi lại sau khi xóa các bản ghi trống. Whats đường ray nhất để bỏ qua những đối tượng trống?

Tôi không muốn xác thực và lỗi, chỉ cần xóa/bỏ qua im lặng.

Trả lời

23

Có một built-in xác nhận:

:reject_if => lambda { |c| c[:name].blank? }, 
+0

vĩ đại đầu apneadiving, cảm ơn! Với điều đó tôi tìm thấy điều này (đối với bất kỳ ai khác đọc) "Bạn cũng có thể đặt: reject_if proc để bỏ qua bất kỳ băm ghi âm mới nào nếu chúng không vượt qua tiêu chí của bạn. Ví dụ: ví dụ trước có thể được viết lại là:" - http: //api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html – Mike

+0

bạn được chào đón :) – apneadiving

+0

Rails 5 có 'reject_if:: all_blank'. Tôi không biết nếu điều này đã được giới thiệu gần đây trong Rails 5 hoặc nếu nó hoạt động trong các phiên bản khung cũ hơn cũng có. – danielricecodes

Các vấn đề liên quan