会場のテーブルがあり、会場編集ページのネストされたフォームを使用して、各会場にオファーを追加しています。ただし、新しいオファーを追加するたびに、fields_forフォームは入力されたテキストを保存し、追加する別のオファーレコード用の新しい空白のフォームを作成します。
追加されたレコードごとに1つではなく、1つの「新しいオファーを追加」フォームが必要です。
オファーは追加されていません-これは問題ありません:
1つのオファーが追加されました-2つの「新しいオファーを追加」フォームと不要な空白のオファーが部分的に追加されました:
これは、1つのオファーを追加した後の外観です。
新しい空白のオファーフォームと空白のパーシャルの数は、コントローラーに組み込まれている数に応じて変化します(その1分で)
会場コントローラー
class VenuesController < ApplicationController
def edit
@venue = Venue.find(params[:id])
1.times { @venue.offers.build }
end
def update
@venue = Venue.find(params[:id])
if @venue.update_attributes(params[:venue])
flash[:notice] = 'Venue updated successfully'
redirect_to :back
end
end
end
会場モデル
class Venue < ActiveRecord::Base
has_many :offers
accepts_nested_attributes_for :offers
end
会場edit.html.erb
<%= form_for @venue do |f| %>
<h2 class="venue_show_orange">Offers</h2>
<div class="edit_venue_details">
<% if @venue.offers.count.zero? %>
<div class="no_offers">
No offers added yet.
</div>
<% else %>
<%= render :partial => 'offers/offer', :collection => @venue.offers %>
<% end %>
<div class="clearall"></div>
<h2 class="edit_venue_sub_header">Add a new offer</h2>
<%= f.fields_for :offers do |offer| %>
<p class="edit_venue">title: <br>
<%= offer.text_field :title, :class => "edit_venue_input" %></p>
<% end %>
</div>
<button class="submit_button" type="submit"> Save changes</button>
<% end %>
では、会場の編集ページに新しいオファーフォームを1つだけ追加して、フォームを空白にして再度使用できるようにするにはどうすればよいですか?また、空白のオファーパーシャルが作成されないようにする方法はありますか?
助けてくれてありがとう!