rails newbie在这里。我陷入了铁轨上的fields_ for,并将永远感激任何人的帮助。
- 在新事件#中,为什么我会得到nomethoderror?错误消息说未定义的方法`name'
- 在活动中,我为什么要获得名字?错误消息说未定义的本地变量或方法"事件"。
我正在尝试创建和查看每个事件为每个朋友都有2个字段的表单。
_form.html.erb:
<%= form_for(@event) do |f| %>
<div class="field">
Date: <%= f.text_field :date %></br>
Friends: <%= f.fields_for :friends do |friends_fields| %>
<%= friends_fields.text_field :name %>
<% end %>
<% end %>
index.html.erb:
<tbody>
<% @events.each do |event_form| %>
<tr>
<td><%= event_form.date %></td>
<td><%= event_form.friends.each do |friend| %>
<%= friend.name %>
<% end %>
</td>
<td><%= link_to 'Show', event %></td>
<td><%= link_to 'Edit', edit_event_path(event) %></td>
<td><%= link_to 'Destroy', event, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
event.rb:
class Event < ActiveRecord::Base
has_many :friends
accepts_nested_attributes_for :friends, allow_destroy: true
end
friend.rb:
class Friend < ActiveRecord::Base
belongs_to :event
end
events_controller.rb:
def new
@event = Event.new
2.times { @event.friends.build }
end
未定义事件,因为事件迭代器在每个迭代中使用event_form而不是事件变量名称。尝试更改以下:
<tbody>
<% @events.each do |event| %>
<tr>
<td><%= event.date %></td>
<td><%= event.friends.each do |friend| %>
<%= friend.name %>
<% end %>
</td>
<td><%= link_to 'Show', event %></td>
<td><%= link_to 'Edit', edit_event_path(event) %></td>
<td><%= link_to 'Destroy', event, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>