-1

我收到“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>
4

4 回答 4

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>
于 2012-10-26T07:15:30.670 回答
0

尝试这个

<% if reservation.machine.present?  %>
  <td class="list_description"> 
    <dt><%= link_to reservation.machine.name, reservation.machine %></dt>
  </td>
<% end %>
于 2012-10-26T06:54:18.233 回答
0

在您的预订控制器中

def index
 @reservation = Reservation.all
end 

在你看来

<%= form_for(@reservation) do |r|%>
 <% if r.machine %>
  <%= link_to r.machine.name, r.machine %>
 <% end %>
<%end%>
于 2012-10-26T12:15:24.027 回答
0

恕我直言,如果机器是预订的可选属性,则先前的响应是有效的。如果它是强制性的,您应该检查模型中的 belongs_to 关系。

于 2017-04-17T15:21:09.657 回答