Rails - значение выбора динамической коллекции не публикуется с остальной частью формы - PullRequest
3 голосов
/ 08 февраля 2011

Я заполняю выбор коллекции (расположенный в части) на основе значения в другом выборе коллекции.

Значения динамического выбора коллекции обновляются, как и следовало ожидать, но когда я отправляю форму, значение отсутствует (обратите внимание, что остальные данные из всех остальных входных данных формы проходят через).

Поскольку требуются данные из динамического выбора коллекции, контроллер перенаправляет вас обратно в новое представление.Теперь, поскольку значение первого раскрывающегося списка уже выбрано (с момента последней попытки заполнить форму), динамический раскрывающийся список уже загружен возможными вариантами выбора, и теперь значение динамического выбора передается при публикации формы.Если вы измените значение первой коллекции, выберите второй, который не будет публиковать его значение до второго раза (как раньше).

Кто-нибудь знает, что я делаю неправильно?

Вот то, что я считаю соответствующими частями моего кода:

Частичное, содержащее динамический набор 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...