У меня есть три модели: companies
, transactions
и subtransactions
. Каждый имеет_много следующего. Мне нужно создать форму, которая сохраняется как в transactions
, так и в несколько записей subtransactions
.
Я борюсь с лучшим подходом к форме и подходящим способом сохранения в БД. В идеале записи сохраняются сразу, если все проходят проверку.
Моя упрощенная форма:
<%= form_for(@transaction) do |f| %>
<div class="field" id="transaction_amount">
<%= f.label :total %><br>
<%= f.text_field :total %>
</div>
<% 1.upto(5) do |i| %>
<%= fields_for("subtransaction[#{i}]") do |s| %>
<div class="field" id="subtotal_amount">
<%= s.label :subtotal, "Subtotal #{i}" %><br>
<%= s.text_field :subtotal %>
</div>
<% end %>
<% end %>
<% end %>
Мой Контроллер транзакций:
def new
@transaction = company.transactions.build if logged_in?
end
def create
@transaction = company.transactions.build(transaction_params)
params[:subtransaction].each do |i|
# build and save
end
if @transaction.save ## @subtransaction.save
flash[:success] = "Success!"
redirect_to success_url
else
render :new
end
end