这是代码
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 = [],因为我有带有标题等属性的电影......
还要添加一件事,我是网络和数据库相关内容的新手 :)