2012-03-14 27 views
0

我在我的rails 3.2应用程序中使用devise。在设计中创建动态添加用户表单

我有一个用户/新页面,其中管理员用户填写电子邮件地址,然后用随机密码创建用户。

所有这些工作正常。

我想要做的是创建一个动态表单,以便管理员可以根据需要创建尽可能多的用户。应该有一个“添加用户字段”按钮和一个“删除用户字段”按钮,允许为用户生成新字段。

我似乎无法让jquery与表单一起工作。

我试着用什么在这个计算器问题被描述:

Creating a dynamic html form

我的代码是这样的(请注意,我在使用形式的@user代替@manager以免混淆轨道与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 %> 

应用程序/资产/ Java脚本/应用程ation.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”,但它仍然不起作用。

回答

0

“add”不是一个有效的选择器....你需要一个“。”。前缀来表示它是一个类。如果没有前缀,你正在寻找一个变量名“加”

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

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

如果你点击一次,你多那么将增加与类=“场”许多元素存在的形式因你的“.field”选择器。

你或许应该使用这样的:

$(".field:first").clone(true)..... 
+0

好了,所以我改成了“新增”,但它仍然不工作... – NielMalhotra 2012-03-14 19:07:00

+0

作品在这里:http://jsfiddle.net/aMAa7/ – charlietfl 2012-03-14 19:11:06

+0

因此,出于某种原因,我从您推荐的内容切换开始,然后改回来开始工作。我想我有一个错字或什么的。不过,我很确定你回答了我的问题 – NielMalhotra 2012-03-14 20:10:08