所以我在我的主ruby文件中设置了一个变量,它处理我的所有帖子并获取请求,然后使用ERB模板实际显示页面。我将数据库处理程序本身传递到erb模板中,然后在模板中运行查询以获取所有(本示例)的授予。红宝石w/Postgres&Sinatra - 查询不会按参数排序吗?
在我的主要ruby文件:
grants_main_order = "id_num"
get '/grants' do
erb :grants, :locals => {:db=>db, :order=>grants_main_order, :message=>params[:message]}
end
在ERB模板:
db = locals[:db]
getGrants = db.exec("SELECT * FROM grants ORDER BY $1", [locals[:order]])
这会产生一些非常随机排序,但是如果我更换$ 1 ID_NUM,它的作品,因为它应该。
这是打字问题吗?我怎样才能解决这个问题?用#{locals [:order]}使用字符串替换也给出了时髦的结果。
嗯,那太好了,除非我不允许安装任何额外的宝石。这是一个学校项目,尽管我并不是很担心,但却让我感到好奇。如果我继续使用Ruby,我将在未来考虑DataMapper ......现在,还有其他选择吗? – nathas 2010-04-30 16:02:48
我建议的唯一的其他事情是使用sprintf来构造您的查询字符串并确保转义/转换是正确的。 – 2010-04-30 18:17:21