Ruby on rails :条件语句和Ruby Rails

Ruby on rails :条件语句和Ruby Rails,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正试图让这些陈述起作用: @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 我应该在什么时候比赛 输入

我正试图让这些陈述起作用:

@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"}
我哪里做错了


更多信息:


该表有三个字段,标题、发布日期和评级,非常简单。评级选项如上文
@all\u ratings

所述。它告诉您
@在
nil

你可能想这么做

@valid_ratings = Rating.find(params["ratings"])
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的变量<代码>:评级
是一个符号
upcase
不是符号上的方法。

有效的\u评级[:rating.upcase]的实际值是多少?可能是
nil
。另外请注意,除非您使用的是Rails 2.3或更早版本,否则您应该避免使用
find(:all,…)
语法,因为Rails 4中不推荐使用该语法。如果您可以描述您的表描述,那就太完美了。。!你在这里推断了很多OP的对象模型。我的模型是电影,评级是itRating中的一个字段。find将返回一个评级。find_all将返回一个数组。正如@Lilluda5所提到的,她希望返回具有给定收视率的电影。