nil:NilClass 的未定义方法“each”..为什么?

undefined method `each' for nil:NilClass..why?

我一直在开发新的应用程序,就像 IMDB,我添加了类别模型,它与协会一起工作得很好,但我在类别控制器中按类别显示电影时遇到问题:

def show
  @category = Category.find(params[:id])
  @category_movies = @category.movies
end

类别展示页面中:

<h align = "center"><%= "Category: " + @category.name %></h1>
<%= render 'movies/movies', obj:@category_movies %>

在索引中我做了:

<div class= "row">
    <% @movies.each do |movie|%>
      <div class="col-sm-6 col-md-3">
        <div class="thumbnail">
          <%= link_to (image_tag movie.image.url(:medium), class: 'image'), movie %>
        </div>
       </div>
   <% end %>
</div>

所以我得到一个错误未定义的方法“每个”nil:NilClass 任何想法

在您的部分中,您使用 @movies 但在控制器中,您将其称为 @category_movies - 您将需要使用相同的变量名称,或使用局部变量。

例如局部变量:

<%= render 'movies/movies', :movies => @category_movies %>

# and in the partial
<% movies.each do |movie|%>

注意:未针对错误和拼写错误进行测试...

控制器和视图中的实例变量 @category_movies 必须相同 :) @movies 未声明,因此为零!