Валидаты и вложенные формы - PullRequest
       14

Валидаты и вложенные формы

0 голосов
/ 14 февраля 2012

приложение my ruby ​​on rails 3.0.3 отображает пустую форму адреса при отображении корзины покупателю.

Модуль адреса запрашивает наличие всех полей:

validates :nom,:prenom,:adresse,:code_postal,:ville,:email, :presence => true

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

Вот мой пустой код создания адреса для вложенной формы в действии show:

if (@cartshowed.adresse_client.nil?)
        @cartshowed.build_adresse_client
      end

Полагаю, что при использовании usind проверка пустого адреса игнорируется, но как только я проверяю данные для уже действительного адреса, это работает.

Как сделать так, чтобы проверка работала при создании адреса, а не только для редакции?

PS: Издание / создание выполняется на той же странице через те же контроллеры. Редакция не была предназначена для существования, но она работает.

РЕДАКТИРОВАТЬ: после нескольких попыток я думаю, что моя проблема заключается в том, что создание адреса с помощью вложенных форм полностью переопределить проверяет поле в адресе. Как я могу проверить валидацию ограничения во вложенной форме?

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Если адрес является вложенным атрибутом (то есть адрес корзины has_one), возможно, вам следует использовать accepts_nested_attributes_for, который позволяет добавить :reject_if Proc.

accepts_nested_attributes_for :addresse, :reject_if => :any_blank 

Я не мог датьлучший пример, чем Райан Дейгл:

http://archives.ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes

http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html#method-i-accepts_nested_attributes_for

0 голосов
/ 15 февраля 2012

Похоже, что как только я использую reject_if, проверка моей модели детей не будет полностью учтена. Удаление reject_if решило все мои проблемы. Теперь пустая форма или форма, не соответствующая требованию проверки, корректно отклоняется на этапе update_attributes в контроллере.

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