У меня есть эти модели:.fields_for и has_many_through
class Order < ActiveRecord::Base
has_many :order_lines
has_many :prizes, :through => :order_lines
accepts_nested_attributes_for :order_lines
end
class Prize < ActiveRecord::Base
has_many :order_lines
end
class OrderLine < ActiveRecord::Base
belongs_to :order
belongs_to :prize
end
Я хотел вложенную форму в форме заказа, который отображает каждый приз в текстовом поле рядом с ним, где пользователь может ввести части (например, количество заказать). Когда форма отправляется, действие create должно соответствующим образом создавать order_lines. Я не могу найти решение нигде.
Спасибо за ваш ответ. При этом fields_for не перебирает призы. Код в блоке не запускается вообще. – jriff
Код работает нормально, но он, вероятно, ничего не показывает, потому что у ордера нет никакого приза. Если вы хотите отредактировать и создать экземпляр приза в форме заказа, вы должны добавить @ order.prizes.build в контроллер. Проверьте [эту ссылку] (http://railscasts.com/episodes/196-nested-model-form-part-1) для получения дополнительной информации – shuriu
Если я делаю заказ @ order.prizes.build, я получаю только один пустой приз экземпляр в блоке. Ссылка на RailsCasts применяется только в том случае, если у меня есть ассоциация «один ко многим». Здесь не так :-( – jriff