-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']のような評価のチェックボックスができました。ユーザーがこれらのチェックボックスの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およびデータベース関連のものに不慣れです:)

4

1 に答える 1

0

何かを追加する前に、各配列を初期化する必要があるかもしれません。

于 2012-10-21T15:41:30.207 に答える