2015-06-10 3 views
0

Я использую x.times для создания полей вложенной формы для сохранения нескольких записей в базе данных.как не сохранять дополнительные записи, если они ноль, используя x.times

Что я хочу сделать, если пользователь ничего не вводит в одном из полей, допустим, 2 2.times, тогда он сохранит только тот, который будет заполнен.

Вот контроллер

class Dashboard::ComplaintsController < ApplicationController 
    def new 
    @complaint = Complaint.new 
    2.times { @complaint.witnesses.build } 
    end 

    def create 
    @complaint = current_user.complaints.build(complaint_params) 
    if @complaint.save 
     redirect_to dashboard_complaint_path(@complaint) 
    else 
     render 'new' 
    end 
    end 
end 

и вот мнение о

<%= form_for @complaint, url: {action: 'create'}, :html => {:multipart => true} do |f| %> 
    <%= f.text_field :title, placeholder: 'Ej: Trabajo realizado incorrectamente', class: 'form-control', tabindex: '-1' %> 
    <%= f.fields_for :witnesses do |witnesses_form| %> 
    <div class="row"> 
     <div class="col-md-6 col-xs-6 col-sm-6"> 
     <%= witnesses_form.text_field :name, placeholder: 'Escriba el nombre del testigo', tabindex: '-1' %> 
     </div> 
     <div class="col-md-6 col-xs-6 col-sm-6"> 
     <%= witnesses_form.text_field :phone, placeholder: 'Escriba el número de teléfono' %> 
     </div> 
    </div> 
    <% end %> 
<% end %> 

Извините, если это кажется нуб вопрос, но я не имел большого опыта работы с RubyOnRails.

Спасибо!

ответ

0

Ну, я был в состоянии исправить это, добавив в модели следующее:

Я это только в моей модели жалоб:

accepts_nested_attributes_for :witnesses 

я изменил его к этому:

accepts_nested_attributes_for :witnesses, reject_if: proc { |attributes| attributes[:name].blank? } 

Теперь он сохраняется только в том случае, если в этом случае есть имя свидетеля.

http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

Смежные вопросы