2013-03-31 67 views
2

我想通了,在整个嵌套表单div的生成中,我不知道如何获得默认值。select2与嵌套窗体的轨道

内部正常的形式,它看起来像下面

<%= f.hidden_field :toolkeeper, :id => "toolkeeper_value" %> 
<%= f.select :toolkeeper, options_from_collection_for_select(@people, :id, :name), :include_blank => true, :selected => '25' %> 

和corresponing JS:

$ -> 
    $("#practice_toolkeeper") 
    .select2({ 
     allowClear: true, 
     placeholder: 'Select an item' 
    }) 
    .select2('val',$("#toolkeeper_value").val()) 

但嵌套形式的一代,我使用hidden_​​field #ID得到选择器的现有值发生如下变化:

select#practice_uebung_maps_attributes_1_role_id 
select#practice_uebung_maps_attributes_2_role_id 
... 

什么是相关ct编写一个JS脚本的方法,它初始化.select2()并且还需要hidden_​​field值?

回答

1

好,我终于找到它了与我的朋友们一些帮助:

我添加了一个功能,创建选择2形式:

function build_select2_role(counter){ 
    $("#practice_uebung_maps_attributes_"+counter+"_role_id").select2({ 
     allowClear: true, 
     placeholder: 'Rolle' 
    }).select2('val',$("#role_id_"+counter).val()) 
    }; 

,并在fields_for部分,只有我调用这个函数(由一个局部变量填充):

<% @runs = 0 %> 
<td> 
    <%= map.hidden_field :role_id, :id => "role_id_#{@runs}" %> 
    <%= map.select :role_id, options_from_collection_for_select(@roles, :id, :name), :include_blank => true %></td> 
    <script type='text/javascript'> 
     build_select2_role(<%= @runs %>); 
    </script> 
</td> 
<% @runs += 1 %> 
+0

你可以发布你的控制器/后端代码只是为了咯咯笑和慈善机构吗? – ahnbizcad