nil的未定义方法`each_with_index':NilClass

时间:2018-02-02 07:00:55

标签: ruby-on-rails chat social-media

我正在尝试将两个应用程序合并在一起并向我的程序添加消息。

然而,在遵循两个教程之后,我被困住了。我收到这个错误:

  

未定义的方法`each_with_index'代表nil:NilClass在这里:

代码:

</div>
  <div class="col-lg-3">
    <%= render 'shared/links' %>
  </div>
<% @users.each_with_index do |index| %>
  <tr>
    <td><%= index +=1 %></td>
    <td><%= user.name %></td>
    <td>
      <%= link_to "Send Message", "#", class: "btn btn-success btn-xs start-conversation",
...

我正在使用Rails 5和Ruby 2.5.0

以下是两个教程:

http://josephndungu....n-ruby-on-rails

https://github.com/scaffeinate/socify

社交媒体部分没有问题,但聊天部分不起作用。

2 个答案:

答案 0 :(得分:2)

简单地说,您可以查看@users值:

<% if @uses.present? %>
  <% @users.each_with_index do |index| %>
      <tr>
        ...
      </tr>
  <% end %>
<% end %>

如果@users

,则为nil提供一个值
# In controller:
@users = User.where(...) || []

希望它有所帮助。

答案 1 :(得分:1)

首先,each_with_index迭代两个参数,一个是索引,第二个是数组对象 所以这里你的语法应该是这样的: -

  <% unless @users.blank?%>
    <%@users.each_with_index do |user, index|%>
      <%= index +=1 %>
      <%=user.name%>
      #.... and so on
    <%end%>
  <%end%>

确保在您的操作中定义了@users