2

我是 Rails 新手,需要一些帮助来创建嵌套表单。

我在 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>

TR 用 js 添加到表中。

更新:

现在出现另一个问题:/

这是我的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根本没有任何玩家可以循环的情况。要显示至少一名玩家的表格,您可以将其更改为

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