Newbie与Rails中的fields_for和嵌套属性粘在一起



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 %>

相关内容

  • 没有找到相关文章

最新更新