Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用字符串输入引用模型_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 使用字符串输入引用模型

Ruby on rails 使用字符串输入引用模型,ruby-on-rails,ruby,Ruby On Rails,Ruby,假设我希望创建一个页面,可以用类型(string)和id(int)查询所需的对象 /查询?类型=people&id=1 会来接我吗 Person.find(1) 鉴于 /查询?类型=城市&id=123 会来接我吗 城市。查找(123) 但是,我在如何将字符串转换为所需的模型类方面遇到了问题 我能想到的唯一办法是 case params[:type] when 'people' @object = Person.find(params[:id]) when 'cities' @obje

假设我希望创建一个页面,可以用类型(string)和id(int)查询所需的对象

/查询?类型=people&id=1

会来接我吗

Person.find(1)

鉴于

/查询?类型=城市&id=123

会来接我吗

城市。查找(123)

但是,我在如何将字符串转换为所需的模型类方面遇到了问题

我能想到的唯一办法是

case params[:type]
 when 'people'
  @object = Person.find(params[:id])
 when 'cities'
  @object = City.find(params[:id])
end
但是,如果我有更多类型的模型,这种方法将非常有问题

有更好的办法吗

提前感谢您,请尝试:

klass = params[:type]
klass.singularize.classify.constantize.find(params[:id])
编辑:


如果您尝试自动执行此操作,您可能会遇到这样的情况:攻击者可以发送“/query?type=TOP\u SECRET\u TABLE&id=1”并获取不允许其访问的信息。当心你想要的东西。它实际上是用于标记对象的ajax。因此,我的下一步将是@object.tags您的代码无法在开箱即用的情况下运行,但我进行了编辑,现在它可以运行了!谢谢!
@object = params[:type].singularize.classify.constantize.find(params[:id])