Создание динамической формы добавления пользователей в devise - PullRequest
0 голосов
/ 14 марта 2012

Я использую devise в своем приложении rails 3.2.

У меня есть страница пользователей / новая, где администратор заполняет адрес электронной почты, а затем создается пользователь со случайным паролем.

Все это прекрасно работает.

Я хочу создать динамическую форму, чтобы администратор мог создавать столько пользователей, сколько они хотят. Должны быть кнопка «Добавить поле пользователя» и кнопка «Удалить поле пользователя», позволяющие создавать новые поля для пользователей.

Я не могу заставить jquery работать с формой.

Я пытался использовать то, что было описано в этом вопросе:

Создание динамической HTML-формы

Мой код выглядит следующим образом (обратите внимание, что я использую @manager вместо @user в форме, чтобы не путать рельсы с current_user. Тем не менее @manager создает нового пользователя.

Пользователи / новый

<%= form_for(@manager) do |f| %>
<% if @manager.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@manager.errors.count, "error") %> prohibited this manager from being saved:</h2>

  <ul>
  <% @manager.errors.full_messages.each do |msg| %>
    <li><%= msg %></li>
  <% end %>
  </ul>
  </div>
  <% end %>

  <div class="field">
<%= f.label :email %><br />
<%= f.text_field :email %>
</div>
<span class="add">Add fields</span>
<div class="actions">
<%= f.submit %>

Приложение / активы / JavaScripts / application.js

//= require jquery
//= require jquery_ujs
//= require_tree .
$(document).ready(function() {
  $(".add").click(function() {
    $(".field:first").clone(true).insertBefore(this);
  return false;
  });
});

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

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

Кроме того, я пропустил метод удаления полей, поскольку он, очевидно, тоже не работает.

РЕДАКТИРОВАТЬ: я изменил селектор на «.add» и я изменил «.field» на «.field: first», но он все еще не работает.

1 Ответ

0 голосов
/ 14 марта 2012

«add» не является допустимым селектором .... вам нужен «.» Префикс для представления, что это для класса. Без префикса вы ищете tagName из "add"

http://api.jquery.com/category/selectors/

 $(".add").click(function() {....

Если вы нажмете более одного раза, вы добавите столько элементов с class = "field", сколько существует в форме из-за вашего селектора .field.

Вы, вероятно, должны использовать что-то вроде:

   $(".field:first").clone(true).....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...