-1

这是代码

if !params[:ratings].nil? 
    params[:ratings].each_key do |r|
        @selected_ratings << r
        @movies << Movie.where('rating = :rating', :rating => r)
        @sort = params[:sort]
      end 
elsif
    @selected_ratings = @all_ratings
    @movies = Movie.order(@sort)
    @sort = params[:sort]
end

这是错误

You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.<<

编辑:问题是我想连接我的实例变量电影中的值,为此我试图使用“<<”。当我使用“=”而不是“<<”时,它只根据最后的评分值考虑电影。

编辑 2(说明):

也许我应该更多地解释一下这个问题。所以问题是我在数据库中有一个电影表,其中包含标题、评级等属性。现在我有一个评级复选框,如 ['G'、'PG'、'R']。当用户选择一个或多个这些复选框时,我的参数[评级]中有这些复选框。例如,如果他选择“R”和“G”,那么我的参数 [rating] 将是 ['G', 'R']。现在,我想做的就是在我的@movies 中只包含那些具有以下评级的电影,为此我正在尝试使用

    @movies << Movie.where('rating = :rating', :rating => r)

但它失败了我试图使用

    @movies = Movie.where('rating = :rating', :rating => r)

但在这种情况下,我选择了相对于一个特定评级的电影,例如只显示“R”评级的电影。

我也不能做@movies = [],因为我有带有标题等属性的电影......

还要添加一件事,我是网络和数据库相关内容的新手 :)

4

1 回答 1

0

也许你必须在添加一些东西之前初始化每个数组。

于 2012-10-21T15:41:30.207 回答