2010-10-27 2 views
3

Я создаю динамический построитель форм .. И у меня есть проблема, которую я не могу исправить.rails fields_for with ajax

Так у меня есть таблицы БД под названием «формы» формы могут иметь «поля» ..

Проблема заключается в том, что, когда пользователь создает новый «поле» (нажмите кнопку Добавить поле), то он должен АЯКС новое поле для .. это раздел.

Проблема заключается в том, что я не могу просто сделать что-то вроде этого:
<%= Form.fields_for Field.new do |field| %>
  <%= field.text_field :name%>
<% end %>

Кто-нибудь есть идея? Да я смотрю Railscasts, да я гугл, да я нашел репо «Комплексного-форм на GitHub.

но не повезли (пока)

ответ

6

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

Например, если у вас есть

class Form < ActiveRecord::Base 
    has_many :fields 
    accepts_nested_attributes_for :fields 

и HTML в виде имеет поле ввода, который имеет что-то

<label for="form_fields_attributes_0_name"> 
<input id="form_fields_attributes_0_name" name="form[fields_attributes][0][name]" type="text" /> 

, то вам нужно написать несколько JavaScript, чтобы сделать его похожим на

<label for="form_fields_attributes_1_name"> 
<input id="form_fields_attributes_1_name" name="form[fields_attributes][1][name" type="text" /> 

Вы можете сделать что-то вроде

$('#form_fields_attributes_1_name').attr('id').split('_'); 

и

$('#form_fields_attributes_1_name').attr('name').split(/\]\[/); 

, чтобы получить на эти цифры ,

Вот example, который переработан here.

+0

OHW .. Я люблю тебя! ;) THANX! :) (если бы я мог дать больше очков .. я бы;)) – heldopslippers