2

私はレールが初めてで、ネストされたフォームを作成するのに助けが必要です。

私はこれをteams/_form.html.erbに持っています

<%= form_for @team do |f| %>

<div class="field">
  <%= f.label "Name" %><br />
  <%= f.text_field :name, :required => true %>
</div>

<%= f.fields_for :players do |builder| %>
    <%= render :partial => 'players_field', :f => builder %>
<% end %>


<div class="actions">
   <%= f.submit %>
</div>
<% end %>

私が欲しいのは、チーム フォームでプレイヤーのリストを作成することです。問題は、レンダリングが機能せず、players_field.html.erb がレンダリングされないことです。

<table class="table table-striped">
  <thead>
  <tr>
    <th>#</th>
    <th>Name</th>
    <th>Position</th>
  </tr>
 </thead>
 <tbody id="tableRow">
  <tr>

 </tr>
 </tbody>
</table>

jsでTRをテーブルに追加します。

アップデート:

別の問題が表示されます:/

これは私のjsです:

 var newRow = document.createElement('tr');
 newRow.innerHTML =  "<td>"+ counter +"</td>"+
                     "<%= f.text_field :name %>"+
                     "<%= f.text_field :position %>"+;
 document.getElementById("tableRow").appendChild(newRow);

エラー:

undefined local variable or method `f' for #<#<Class:0x0000000288dd38>:0x007f77cc1226e0>

これを追加できないのはなぜですか?

4

1 に答える 1

0

ブロック

<%= f.fields_for :players do |builder| %>
  <%= render :partial => 'players_field', :f => builder %>
<% end %>

は基本的にループスルー@team.playersです。@team単にループするプレイヤーがいない場合もあります。少なくとも 1 人のプレーヤーのフォームを表示するには、これを次のように変更できます。

f.fields_for :players, @team.players.build do |builder| ...
于 2012-11-03T01:41:13.903 に答える