2013-01-23 49 views
1

我想使用同一個模型在一個視圖(new.erb.html)中創建多個記錄,同時使用單個提交。在軌道中的同一模型的新視圖中追加表單部分

比如我有一個名爲報表模型的一些領域,例如標題,描述和日期

如何呈現相同的形式分多次當我點擊添加按鈕?我認爲這不是一個被模仿的問題,因爲它始終是相同的模型動作。 感謝

+0

嗯,也許我不會很好地理解你的問題,但是你究竟想要做什麼?你用js來附加表單嗎? –

+0

是的,我想使用jQuery,因此我想管理陣列,用於創建同一型號 – davelab

+0

所以,你可以根據需要使用jQuery的append添加儘可能多形式的控制器動作,他們不有什麼不同:只使用Khustochka的暗示'布特模型[] [名稱]的名稱。 –

回答

1

你可以做這樣的事情(我還沒有測試的代碼我自己):

HAML:

.model 
    %input{:name => "model[][name]"} 
    %input{:name => "model[][desc]"} 
    %input{:name => "model[][date]"} 
.container 
%button.add-model 

JS:

$('.add-model').click(function(){ 
    $('.model').clone().first().appendTo('.container'); 
}) 

控制器:

def save 
    params[:model].each do |props| 
    Model.create(props) 
    end 
end 
+0

好的,謝謝,我正在研究這個解決方案,但我不使用haml,我使用SimpleForm gem支持html,你知道如何改變格式模型[] [名稱]的輸入名稱嗎? – davelab

+0

我不確定SimpleForm是否有助手使名稱像「model [] [name]」。你能明確指定名稱嗎?像f.input:name,:name =>「model [] [name]」)? –

+0

是它的工作原理:input_html =>「模型[] [名]」沒有一個幫手,現在的JavaScript工作正常,但在創建操作無法正常工作,它僅保存最後輸入 – davelab

0

我做的是使用JavaScript(jQuery的) - 在頁面加載我省唯一的呈現形式到JS變量(其實不是形式,而是它裏面的輸入),然後在點擊「添加更多」鏈接在表單中追加更多輸入。

爲了一次保存很多對象,您需要手動輸入名稱(類似model[][name]以發送值數組),以及接受數組的控制器。

相關問題