Admin#index中的NoMethodError,nil的未定义方法`name':NilClass

时间:2012-10-26 06:38:50

标签: ruby-on-rails

我得到'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 个答案:

答案 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关系。