これはコードです
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']のような評価のチェックボックスができました。ユーザーがこれらのチェックボックスの1つ以上を選択すると、params[ratings]にそれらが含まれます。たとえば、彼が「R」と「G」を選択した場合、私のparams [rating]は['G'、'R']になります。今、私がやりたいのは、私の@moviesに次の評価を持つ映画だけを含めることであり、そのために私は使用しようとしています
@movies << Movie.where('rating = :rating', :rating => r)
しかし、私が使用しようとして失敗します
@movies = Movie.where('rating = :rating', :rating => r)
しかし、この場合、私は1つの特定の評価に関して選択された映画を持っています。たとえば、「R」評価の映画のみが表示されます。
また、タイトルなどのプロパティを持つ映画があるため、@ movies=[]を実行できません。
追加するもう1つのことは、私はWebおよびデータベース関連のものに不慣れです:)