评估nil时出错

时间:2012-10-21 15:17:52

标签: ruby-on-rails

这是代码

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.<<

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

编辑2(描述):

也许我应该多解释一下这个问题。事情就是这样 我在数据库中有一个电影表,其属性如 titile,rating等。现在我有一个等级的复选框 [ 'G', 'PG', 'R']。当用户选择这些复选框中的一个或多个时 然后我有我的参数[评级]。例如,如果他选择'R' 和'G'然后我的参数[评级]将是['G','R']。现在,我想要的 做的就是只有那些在我的电影中有以下等级的电影 @movies和我正在尝试使用

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

但它失败了 我试过用

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

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

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

还有一件事要补充,我是网络和数据库相关的新手:)

1 个答案:

答案 0 :(得分:0)

也许你必须在添加内容之前初始化每个数组。