Error occured while evaluating nil

This is the code

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

This is the error

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

The clue is often in the error message, it is worth reading it carefully.
It is saying that you have something << where the something is nil.
You have not told us which line it is failing on, but presumably it is
either @selected_ratings or @movies. What are they set to before the
lines you have shown us?

Colin

if !params[:ratings].blank? && params[:ratings].is_a?(Array)
  params[:ratings].each do |rating|
    (@selected_ratings ||= []) << rating
    @sort = params[:sort]
    (@movies ||= []) << Movie.where("rating = ?", rating)
  end
else
  @selected_ratings = @all_ratings
  @sort = params[:sort]
  @movies = Movies.order(@sort)
end

Hi,

Maybe i should explained a bit more about the problem. So the thing is
that that i have a movie table in the database with properties such as
titile, rating etc. Now i have a check box of ratings like
['G','PG','R']. When a user selects one or more of these check boxes
then i have those in my params[ratings]. For example if he chooses 'R'
and 'G' then my params[rating] would be ['G', 'R']. Now, what i want to
do is to have only those movies which have the following ratings in my
@movies and for that i am trying to use

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

but it fails
I have tried to use

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

But in this case i have movies selected with respect to one particular
rating for example only 'R' rated movies are shown.

Also i cannot do @movies = []
because i have movies with properties such as title etc...

One more thing to add, i am new to web and database related stuff :slight_smile:

Hi,

Since you have not quoted the previous reply we do not know whether
this is in reply to Jordan's suggestion. If it is in reply to his
suggestion then you should quote it and make clear why it does not
work.

Colin

Colin Law wrote in post #1080610: