2016-12-07 29 views
0

我正在使用cocoon來處理某些表單字段,但我需要使用頁面上其他地方的活動表單字段的值,特別是在其他地方使用的數組上;所以我需要用數組填充表單域,當一個改變時,改變另一個。一個數組和一些嵌套的表單域一致嗎?

我現在正在做的是,每當數組被修改時,我刪除所有表單字段,再次添加它們,但然後我不能通過索引訪問它們,當一個被更改時,我不確定如何捕獲更改並得到修改後的實際索引,如果cocoon處理插入和刪除操作,則索引與顯示的內容不一致。參考

添加代碼:

我有這個功能來清除表單,結交新朋友,但我不確定如何實際訪問form_fields不能從field_coords陣列填充。

function redo_forms(){ 
    $('.remove_point').each(function() { 
    $(this).trigger('click'); 
    }); 
    for(i=0; i < field_coords.length; i++){ 
    $('.add_point').trigger('click'); 
    //add data here 
    }; 
} 

而且形式本身被定義爲:

<tbody> 
    <%= f.fields_for :points do |point| %> 
     <%= render 'admin/shared/point_fields', {:f => point} %> 
    <% end %> 
    <tr id='new_point'> 
     <td colspan="3"> 
      <%= link_to_add_association t(:add_points), f, :points, {'data-association-insertion-method' => 'before', 'data-association-insertion-node' => '#new_point', :partial => 'admin/shared/point_fields', :class => 'add_point'} %> 
     </td> 
    </tr> 
</tbody> 

和:

<tr class='nested-fields'> 
    <td><%= f.text_field :lat, :class => 'coordinate_lat span8' %></td> 
    <td><%= f.text_field :lng, :class => 'coordinate_long span8' %></td> 
    <td><%= link_to_remove_association t(:remove_point), f, :class => 'remove_point' %></td> 
</tr> 
+0

請問您可以添加您的代碼以供參考。 – anandh

回答

0

您是否嘗試過使用髒功能到位。點擊的?

我覺得點擊會發送一個空白記錄,因爲它會點擊,你的事件觸發沒有發送,然後用戶鍵入值。

另外,是否有一個原因,你不願意設置控制器來保存你正在清除的信息&重新進入?

+0

我使用了.click,因爲我認爲創建字段的一部分方式,然後給它一個值就類似於.click,然後訪問創建的表單並設置它的值,但是我找不到訪問方式它。 至於爲什麼我沒有設置控制器來保存陣列;雖然我最初將控制器的原始點集複製到javascript客戶端代碼,但我沒有意識到我可以設置一個ajax請求來更新數據;我想這可能會起作用,但它似乎有點過分,也許。 – Arfons

+0

我不是非常精通它,或者我會帶你通過它 - 但我跟着一些博客 - [Dirty Explaination](https://www.bignerdranch.com/blog/dirty-forms/)&有一個jQuery從上週保存的寶石,我沒有安裝 - [寶石](https://github.com/snikch/jquery.dirtyforms)。 – Mirv

相關問題