2017-12-15 10 views
0

次のフォームは、複数の関連レコードを同時に編集し、in_groups_ofに基づいてレコード数をフォーマットします。2回生成されたネストされたフィールド

<%= form_for(@event) do |f| %> 
    <div class='row'> 
    <% @event.eventdistances.in_groups_of(6, false) do |eventdistances| %> 
     <%= f.fields_for :eventdistances do |eventdistance| %> 
     <div class='small-2 medium-2 large-2 columns'> 
      <%= eventdistance.check_box :active %> <%= eventdistance.object.building.nome %><br /><%= number_with_precision(eventdistance.object.distance, precision: 1) %> km 
     </div> 
     <% end %> 
    </div> 
    <% end %> 

しかし、生成されたhtml bengは、6個のグループの後に行タグを閉じず、シバン全体が2回レンダリングされます。

do in_groups_offields_for何らかの理由で、in_groups_ofタグを削除した場合、完全なバージョンは1つしかレンダリングされないためですか?

どうすればこの問題を適切に解決できますか?

+0

私は問題の根源は、 'fields_for'は関連付けを行うことを意図していると思いますが、' in_groups_of'は、stdlib Enumerableモジュールのメソッドであり、リレーションオブジェクトを配列に分割します。 – max

+0

しかし、私はあなたが間違った問題に近づいていると思います。レスポンスグリッド内の項目を使用する場合は、行を手動で追加する必要はありません。代わりに、幅12のボックスにそれらを押し込み、表示サイズに応じてフローさせます。 – max

+0

実際には 'in_groups_of'タグ(基底グリッド)を削除しても既にこれが起こっていますが、流れていますが完全ではありません。 – Jerome

答えて

1
<%= form_for(@event) do |f| %> 
    <% @event.eventdistances.in_groups_of(6, false) do |eventdistances| %> 
    <div class='row'> 
     <%= f.fields_for :eventdistances, eventdistances do |eventdistance| %> 
     <div class='small-2 medium-2 large-2 columns'> 
      <%= eventdistance.check_box :active %> <%= eventdistance.object.building.nome %><br /><%= number_with_precision(eventdistance.object.distance, precision: 1) %> km 
     </div> 
     <% end %> 
    </div> 
    <% end %> 
<% end %> 

最初の問題どのようなものあなたはf.fields_for :eventdistances do |eventdistance|を呼び出すときに呼び出すf.object.eventdistances(f.object = @event)、あなたが期待しているようなローカル変数を使用していません。それはなぜ6回すべてのレコードを繰り返すのですか?

あなたがしたいのは、コレクションを2番目の引数として渡すことです。また、各グループを<div class='row'>に入れる場合は、.in_groups_ofに渡されたブロック内にタグを配置したいとします。

関連する問題