0

私はこれらのステートメントを機能させようとしています:

@all_ratings = ["G","PG","PG-13","R"]
@valid_ratings = params["ratings"]
@movies = Movie.find(:all ,  :conditions => {@valid_ratings[:rating.upcase] => "1"}   )

しかし、私はエラーが発生しています:

undefined method `to_sym' for nil:NilClass

私が試合をするべきとき。

入力例は次のとおりです。

"ratings"=>{"PG-13"=>"1"}

どこが間違っていますか?


より詳しい情報:

このテーブルには、タイトル、リリース日、評価の 3 つのフィールドがあり、非常にシンプルです。レーティングのオプションは、上記の に記載されてい@all_ratingsます。

4

2 に答える 2

0

Rails 3.x:

@all_ratings = ["G","PG","PG-13","R"]
@valid_ratings = params["ratings"]
# Is @valid_ratings the same as you example, "ratings"=>{"PG-13"=>"1"}?
# It would be easiest to pass a subset of @all_ratings such that the params
# get converted to something like this: "ratings"=>["G", "PG"]
Movie.where(:rating => valid_ratings).all
# SQL: SELECT * FROM movies WHERE rating IN ('G','PG')

何をしようとしているのかわかりません:rating.upcase。評価という名前の変数はありますか?:ratingはシンボルです。upcaseSymbolのメソッドではありません。

于 2013-02-25T03:56:54.760 に答える
0

それはあなた@valid_ratingsnil

あなたはおそらくこれをしようとしていますか?

@valid_ratings = Rating.find(params["ratings"])
于 2013-02-25T03:35:57.997 に答える