Отклонить, если не работает - PullRequest
       16

Отклонить, если не работает

1 голос
/ 19 сентября 2011

У меня проблемы с :reject_if.Я не знаю, почему следующий код не работает.

Просмотр - _form.html.erb:

<%= f.fields_for :questions do |builder| %>
  <div class="nested-field">
    <%= builder.label :id, "Question" %><br />
    <%= builder.collection_select(:id, Question.all(:order => 'question'), :id, :question, { :prompt => 'Select Question' } ) %>
  </div>
  <div class="nested-field">
    <%= builder.label :test1 %><br />
    <%= builder.text_field :test1 %>
  </div>
  <div class="nested-field">
    <%= builder.label :test2 %><br />
    <%= builder.text_field :test2 %>
  </div>
  <div class="nested-field">
    <%= builder.label :description %><br />
    <%= builder.text_field :description %>
  </div>
  <br /><br /><br />
  <hr />
<% end %>

Модель - опроснаярб:

has_many :questions, :dependent => :destroy
accepts_nested_attributes_for :questions, :reject_if => lambda { |a| a[:id].blank? }, :allow_destroy => true

Большое спасибо!

Ответы [ 2 ]

4 голосов
/ 21 ноября 2011

вместо

:reject_if => lambda { |a| a[:id].blank? }

попробовать

:reject_if => lambda { |a| a['id'].blank? }

(обратите внимание на строку 'id') и для точного следования API используйте proc

:reject_if => proc { |a| a['id'].blank? }
1 голос
/ 19 сентября 2011

Я посмотрел на API для acceptpts_nested_attributes_for и обнаружил там, что документация гласит:

: reject_if Позволяет указать Proc или Символ, указывающий наметод, который проверяет, должна ли быть построена запись для определенного хэша атрибута.

Вы пытались заменить лямбду на proc?Синтаксис здесь, кажется, особенный, поэтому лямбда может быть просто проигнорирована.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...