2

我发现,在嵌套表单 div 的整个生成过程中,我不知道如何在那里获取默认值。

在正常形式中,它看起来像以下

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

和相应的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
...

编写 JS 脚本的正确方法是什么,它初始化 .select2() 并采用 hidden_​​field 值?

4

1 回答 1

1

好的,我终于在朋友的帮助下弄清楚了:

我添加了一个函数来创建 select2 表单:

  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 %>
于 2013-03-31T13:00:42.190 回答