这是代码
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 = [] 因为我的电影有标题等属性...
还有一件事要补充,我是网络和数据库相关的新手:)
答案 0 :(得分:0)
也许你必须在添加内容之前初始化每个数组。