假设我希望创建一个可以使用type(string)和id(int)查询所需对象的页面。
/查询类型=人&安培;?ID = 1
会接我
Person.find的(1)
,而
/查询类型=城市&安培;?ID = 123
会接我
City.find(123)
但是,我在如何将字符串转换为所需的模型类方面存在问题。
我能想到的唯一方法是
case params[:type]
when 'people'
@object = Person.find(params[:id])
when 'cities'
@object = City.find(params[:id])
end
但是,如果我有更多类型的模型,这种方法会很成问题。
有更好的方法吗?
提前谢谢你,
答案 0 :(得分:38)
尝试:
klass = params[:type]
klass.singularize.classify.constantize.find(params[:id])
编辑:
@object = params[:type].singularize.classify.constantize.find(params[:id])