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
...

.select2() を初期化し、さらに hidden_​​field 値を取る JS-Script を記述する正しい方法は何ですか?

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 に答える