0

動的/ネストされたフィールド/フォームに繭を使用しています。

ただし、部分ファイル内でインデックス変数を渡すことはできません。

これが私の_form.html.erbにあるものです:

 <% @project_procurement_management_plan.items.each_with_index do |item, index | %>
  <%= f.fields_for :items, item, :child_index => index do |builder| %>
    <%= render 'item_fields', :f => builder, :g=>index %>
  <% end %>
<% end %>
<div>
  <%=link_to_add_association 'Add Item', f, :items, class:"btn btn-success totheleft" %>
</div>

そして私の_item_fields.html.erbで:

<%= f.select :category_id, Category.all.map{ |c| [c.code, c.id] }, {:prompt=>""},{class:"cat-code #{g}",required:true} %>

それは言います:

#<#:0x007f82dadeacd8> の未定義のローカル変数またはメソッド `g'

私のパーシャルでは、インデックスとしての変数gを読み取ることができないことは明らかです。

インデックス変数を fields_for と私のレンダリングに適切に渡すための回避策はありますか?

ありがとうございました。

4

3 に答える 3

0

@parameter を私のように設定することで、このようなものを(hamlで)解決しました:

question.html.haml

- @answer_index = 0
.answers
  = f.fields_for :answers
  = f.link_to_add "Add an answer", :answers

answer.html.haml

.answer
  .field
    = f.label :answer, "Answer #{('A'..'Z').to_a[@answer_index]}"
    = f.radio_button :correct , 1, {onclick: "check_answer(this);"}
    = f.text_field :answer
    %span.remove
      = f.link_to_remove "remove"

- @answer_index += 1

@answer_index のような @ 変数を渡せるかどうかわからない

したがって、あなたにとっては次のように見えるかもしれません(ただし、正確ではありません):

_form.html.erb

  <%= @item_index = 0 %>
  <%= f.fields_for :items do |builder| %>
    <%= render 'item_fields', :f => builder %>
    <%= @item_index += 1 %>
  <% end %>
<% end %>
<div>
  <%=link_to_add_association 'Add Item', f, :items, class:"btn btn-success totheleft" %>
</div>

_item_fields.html.erb

<%= f.select :category_id, Category.all.map{ |c| [c.code, c.id] }, {:prompt=>""},{class:"cat-code #{@item_index}",required:true} %>
于 2014-03-27T22:13:00.720 に答える
0

自分でアイテムを反復処理する必要はありません! fields_forあなたのためにそれをします。

ループを取り外します<% @project_procurement_management_plan.items.each_with_index do |item, index | %>

インデックスは今でも必要ですか?

于 2013-03-24T01:12:16.083 に答える
0

「ローカル」の使用を検討してください

<%= render :partial => 'item_fields', :locals => { :g => index, :f => builder } %>
于 2013-03-24T01:13:11.260 に答える