Я заполняю выбор коллекции (расположенный в части) на основе значения в другом выборе коллекции.
Значения динамического выбора коллекции обновляются, как и следовало ожидать, но когда я отправляю форму, значение отсутствует (обратите внимание, что остальные данные из всех остальных входных данных формы проходят через).
Поскольку требуются данные из динамического выбора коллекции, контроллер перенаправляет вас обратно в новое представление.Теперь, поскольку значение первого раскрывающегося списка уже выбрано (с момента последней попытки заполнить форму), динамический раскрывающийся список уже загружен возможными вариантами выбора, и теперь значение динамического выбора передается при публикации формы.Если вы измените значение первой коллекции, выберите второй, который не будет публиковать его значение до второго раза (как раньше).
Кто-нибудь знает, что я делаю неправильно?
Вот то, что я считаю соответствующими частями моего кода:
Частичное, содержащее динамический набор select:
<%= collection_select(:f, :address_id, @addresses, :id, :concatenateAddress, {:include_blank => "Select an Address"}) %>
Действия New и Create в моем контроллере:
def new
@contact = Contact.new
@companies = ContactCompany.all
@addresses = []
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @contact }
end
end
def create
@contact = Contact.new(params[:contact])
respond_to do |format|
if @contact.save
flash[:notice] = 'Contact was successfully created.'
format.html { redirect_to(@contact) }
format.xml { render :xml => @contact, :status => :created, :location => @contact }
else
format.html { render :action => "new" }
format.xml { render :xml => @contact.errors, :status => :unprocessable_entity }
end
end
end
Части в моем представлении (показаны как поля выбора коллекции, так и мое поле наблюдения
<tr>
<td colspan = "2">
<%=
@company = ContactCompany.find(:all)
f.collection_select(:company_id, @company, :id, :name,{:selected => @contact.company_id })
%>
<br/>
<%= link_to 'Company Index', {:controller=>"contact_companies", :action=>"index"} %> | <%= link_to 'New Company', {:controller=>"contact_companies", :action=>"new"}%>
</td>
<td><%= f.text_field :phone_number %></td>
<td><%= f.text_field :fax_number %></td>
</tr>
<tr>
<td colspan = "2">Address</td>
<td>Cell Phone</td>
<td>Alternate Phone</td>
</tr>
<tr>
<td colspan = "2">
<% @addresses = ContactCompanyAddress.find(:all, :conditions=> {:company_id => @contact.company_id}) %>
<%= observe_field "contact_company_id", :url=>{:controller => 'contact_companies', :action=>'ajax_get_addresses', :id => ContactCompany.first}, :with=> 'company_id' %>
<div id="addresses"><%= render :partial => 'contact_companies/addresses', :object => @addresses, :f => 'f'%> </div>
<%= link_to 'Address Index', {:controller=>"contact_company_addresses", :action=>"index"} %> | <%= link_to 'New Address', {:controller=>"contact_company_addresses", :action=>"new"}%>
</td>
</tr>