рельсы fields_for с ajax - PullRequest
       2

рельсы fields_for с ajax

3 голосов
/ 27 октября 2010

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

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

Проблема в том, что когда пользователь создает новое поле (нажмите «Добавить поле»)это должно ajax новое поле для .. этого поля.

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

У кого-нибудь есть идея?Да, я смотрю Railscasts, да, я гуглил, да, я нашел репозиторий «сложных форм» на github.

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

1 Ответ

6 голосов
/ 27 октября 2010

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

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

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(/\]\[/);

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

Вот пример , который подвергается рефакторингу здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...