首页 文章

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

提问于
浏览
-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 回答

  • 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>
    
  • 0

    试试这个

    <% if reservation.machine.present?  %>
      <td class="list_description"> 
        <dt><%= link_to reservation.machine.name, reservation.machine %></dt>
      </td>
    <% end %>
    
  • 0

    在您的预订控制器中

    def index
     @reservation = Reservation.all
    end
    

    在你看来

    <%= form_for(@reservation) do |r|%>
     <% if r.machine %>
      <%= link_to r.machine.name, r.machine %>
     <% end %>
    <%end%>
    
  • 0

    恕我直言以前的回复在机器是预约的可选属性的情况下有效 . 如果是强制性的,您应该检查模型中的belongs_to关系 .

相关问题