我有一個家長對象,有幾十個孩子,都非常相似。我有一張表格和一張表格,用繭編輯它們。有了它(和this answer),我可以添加新行到表中,並刪除現有的,它工作得很好。如何使用cocoon在Rails中克隆子對象?
我想要做的是在行尾添加另一個按鈕,以便與刪除按鈕一起使用,將該行克隆爲新行。
父窗體:
= simple_form_for @release, html: { multipart: true } do |f|
= f.error_notification
.col-md-12
%table#myTable.table-striped.table-bordered
%thead
%tr
%th Description
...
%th Remove
%tbody.codes
= f.simple_fields_for :codes, wrapper: false do |code|
= render 'code_fields', f: code
---> New code below would go here <---
.links
= link_to_add_association 'Add Code', f, :codes, data: {"association-insertion-node" => "tbody.codes", "association-insertion-method" => "append"}
.form-actions
= f.button :submit, class: 'btn btn-primary pull-right'
兒童部分:
%tr.nested-fields
= f.input :id, as: :hidden
%td= f.input :description, label: false, input_html: { class: 'input-sm myinput' }
...
%td
= link_to_remove_association f, class: 'btn btn-default btn-xs' do
.glyphicon.glyphicon-remove
我希望能夠像這樣添加一些行的最後td
元素:
= link_to_add_association 'Clone', f, :codes, data: {"association-insertion-node" => "tbody.codes", "association-insertion-method" => "append"}, render_options: {locals: {code: code.object}}
我有2個問題。首先,繭預先生成要插入的HTML的方式,我不能將該函數調用放在部分內容中,因爲 - 即使我想要正確地使用語法 - 它會創建一個無限循環。
我很樂意通過某種方式解決這個問題,如果有某種方法可以將DOM節點「植入」HTML值,那麼jQuery將DOM節點置於相應錶行的最後一個單元格中當前對象。在我想要插入「克隆」按鈕的位置,我在code.object
變量中擁有當前的「代碼」子對象。 (至於code
此時是fields_for
表單對象。)
有沒有辦法做到這一點? render_options
似乎很有前途,但我無法弄清楚這是否僅僅是一個語法問題,或者如果生成器永遠不會查看我在生成字段中傳遞的值的散列值。
'= link_to_add_association '克隆',F,1場:代碼,數據:{ 「協會插入節點」=>「 tbody.codes「,」association-insertion-method「=>」append「},wrap_object:Proc.new {| d | d = code.object.clone; d.id = nil; d}'有用! –
剛剛發現我應該在新版Rails中使用#dup而不是#clone。 –