我得到'NoMethodError' 请建议如何解决此问题
非常感谢,
NoMethodError in Admin#index
.....
.....
undefined method `name' for nil:NilClass
.....
.....
Extracted source (around line #23):
20: <% for reservation in reservations %>
21: <tr class="<%= cycle('list_line_odd', 'list_line_even') %> ">
22: <td class="list_description">
23: <dt><%= link_to reservation.machine.name, reservation.machine %></dt>
24: </td>
25: <td> <%= reservation.startdate.strftime("%m/%d/%Y %I:%M %p") %> </td>
26: <td> <%= reservation.enddate.strftime("%m/%d/%Y %I:%M %p") %> </td>
答案 0 :(得分:0)
试试这个
<% if reservation.machine.present? %>
<td class="list_description">
<dt><%= link_to reservation.machine.name, reservation.machine %></dt>
</td>
<% end %>
答案 1 :(得分:0)
由于reservation.machine.name
而发生错误。在您的情况下reservation.machine
,一个或多个预订会返回nil
,然后您正在调用name
方法。
在对象返回nil之前避免此类错误检查的最佳方法。
<td class="list_description">
<dt>
<% if reservation.machine %>
<%= link_to reservation.machine.name, reservation.machine %>
<% end %>
</dt>
</td>
答案 2 :(得分:0)
在预订控制器中
def index
@reservation = Reservation.all
end
在你看来
<%= form_for(@reservation) do |r|%>
<% if r.machine %>
<%= link_to r.machine.name, r.machine %>
<% end %>
<%end%>
答案 3 :(得分:0)
如果机器是预订的可选属性,则恕我直言以前的回复有效。如果是强制性的,您应该检查模型中的belongs_to关系。