новые / редактировать действия на странице шоу :: вопрос передового опыта - PullRequest
2 голосов
/ 13 августа 2010

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

после некоторых экспериментов я понял, что мне нужен совет относительно наилучшей практики для этой ситуации ... вот 2 метода, которые я пытался

1) с использованием вложенного field_fors ...

form_for @job do |j|
  j.fields_for :invoice do |i|
    i.fields_for :charges do |c|
      c.text_field :amount

или 2)

form_for @job.invoice.charges.build do |c|
  c.text_field :amount

с вложенным подходом, проблема в том, что теперь у меня есть новый объект, который бросает гаечный ключ в моем представлении шоу, когда он перебирает существующие объекты. внезапно попытка отрендерить все время созданного_отказа не удалась, поскольку новый объект еще не был сохранен.

проблема с подходом 2) в том, что я либо отправляю каждую форму на свой собственный контроллер, чтобы обработать ее, но если она не проверяется, мне нужно визуализировать представление show ... что означает, что я должен предоставить каждому контроллеру, который у меня Форма для всех переменных экземпляра, методов и т. д. для отображения страницы.

и я не совсем понял, как работает обработка ошибок. иногда моя форма помечается классом fieldWitherrors, а иногда нет. Я опробовал оба подхода, но мне сложно понять это.

Кто-нибудь может посоветовать, куда мне идти?

1 Ответ

1 голос
/ 06 мая 2011

Если новый заряд - это все, что вам нужно, то последним подходом является путь. Обратите внимание, что они в основном одинаковы:

form_for @job.invoice.charges.build do |c|

и

@charge = Charge.new(:invoice_id => @job.invoice.id)
form_for @charge do |c|

Используя этот второй случай, вы не связываете новый заряд с заданием до тех пор, пока он не будет сохранен, и если вы переместите первую строку с @charge = ... в контроллер, вы можете повторно обработать форму, если проверки не пройдены.

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