2012-04-25 3 views
2

У меня есть отношения HAS_ONE, которые должны существовать:Rails теряет вложенные дети атрибут формы ошибки

has_one :child, :dependent => :destroy 
validates_presence_of :child 

В моем контроллере я строю ребенка на новый с:

@parent.build_child 

Когда форма отправлена с ошибками рендеринг заканчивается тем, что проигрывает встроенный ребенок. Это заставляет мои поля_ быть пустым, что предотвращает ввод пользователем требуемого дочернего поля. Есть идеи?

+0

Вы понимаете, что 'методы build_' которые ничего БД не экономить? Почему вы ожидаете, что ваш ребенок будет спасен посредством перенаправления? Общий подход к визуализации представления «edit» снова с отображением информации об ошибках (ошибках). Примечание: 'render', а не' redirect_to'. Таким образом, ваше представление будет заполнено вашими неполными данными, как вы ожидаете. – jdoe

+0

Я рендеринга не перенаправляю. Извините, что было неясно, я изменил его в сообщении. – nfed

+0

Итак, вы вызываете '@ parent.build_child', а потом что? Вы представляете какое-то представление для заполнения данных о ребенке (этот порог не хранится в БД)? Результат заполнения формы передается 'children_controller # create', правильно? Это место, где вы пытаетесь получить доступ к вашему «ребенку» через '@ parent'? – jdoe

ответ

0

Фигурные это:

before_filter :build_child, :only => [:new, :edit] 

должен был быть:

before_filter :build_child, :only => [:new, :edit, :create, :update] 
Смежные вопросы