2012-03-14 26 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