2010-08-24 3 views
0

У меня есть вложенная форма, как это:Вложенные формы и link_to_function

<% form_for setup_training(@training), :url => admin_trainings_path, :html => { :class => :form } do |f| -%> 
<!-- begin of form --> 
<!-- content of :partial => "day_form" --> 
<% f.fields_for :days do |days_form| %> 
    <%= render :partial => "admin/days/form_inner", :locals => { :f => days_form }%>  
<% end %> 
<!-- end of content of :partial => "day_form" --> 
<%= link_to_function("[+] Ajouter une date", nil, :id => "add-place-and-dates-link") do |page| 
    page.insert_html :bottom, "place-and-dates-inner", :partial => "day_form", :locals => { :f => f } 
end %> 

<% end -%> 

В первый раз я загрузить мою страницу, то первый fields_for блок имеют идентификатор 0;

В первый раз, когда я нажимаю «добавить дату», новый блок fields_for создается с id = 1;

Затем, каждый раз я чокнуться на «добавить дату», отображается новый fields_for блок, но идентификатор остается на 1.

HTML-пример может быть более явным, вот выход у меня есть:

<!-- This part is generated when i display /new, id is 0 --> 
<label class="label" for="training_days_attributes_0_place_id">Lieu</label> 
<input class="text_field" id="training_days_attributes_0_place_id" name="training[days_attributes][0][place_id]" size="30" type="text"> 

<!-- This part is generated when i click on "add a new date", id is 1 --> 
<label class="label" for="training_days_attributes_1_place_id">Lieu</label> 
<input class="text_field" id="training_days_attributes_1_place_id" name="training[days_attributes][1][place_id]" size="30" type="text"> 

<!-- This part is generated when i click on "add a new date" a second time, id is 1, but it should be 2 --> 
<label class="label" for="training_days_attributes_1_place_id">Lieu</label> 
<input class="text_field" id="training_days_attributes_1_place_id" name="training[days_attributes][1][place_id]" size="30" type="text"> 

Спасибо за аванс за помощь!

ответ

0

Если вы посмотрите на свой встроенный javascript в своем источнике страницы, вы увидите, что ваша link_to_function содержит статический html, который будет вставлен в контейнер-место-и-даты-внутренний. Это не изменяется, потому что он был создан на сервере и отправлен пользователю.

Чтобы исправить это, вам, вероятно, было бы лучше всего подсчитать количество сторон, которые были предварительно вставлены в место-даты-внутренние и соответственно увеличиваться в вашем шаблоне. Этот вид встроенного link_to_function, который мне всегда не нравился, чтобы быть честным.

+0

Благодарим вас за ответ. На самом деле, я попытался использовать функцию link_to_remote с обновлением рендера, добавив новое поле формы, но я не знал, как передать эту форму (f). Если у вас есть какие-либо предложения, не стесняйтесь просвещать меня ;-) –

+0

На эту тему есть пара рельсов, которые должны вам помочь. :) http://railscasts.com/episodes?search=nested – mark

 Смежные вопросы

  • Нет связанных вопросов^_^