Ruby 设置DataMapper:querystring参数的顺序参数
由于我还不能流利地使用Ruby,我正在努力在我的Rails3/DataMapper项目中构建一个优雅的排序解决方案 DataMapper示例演示了如何使用带有Ruby 设置DataMapper:querystring参数的顺序参数,ruby,datamapper,Ruby,Datamapper,由于我还不能流利地使用Ruby,我正在努力在我的Rails3/DataMapper项目中构建一个优雅的排序解决方案 DataMapper示例演示了如何使用带有asc或desc参数的符号来订购重新脉冲。例如: Document.all(:order => [:created_at.desc]) 将params[:sort]和params[:direction]转换为DataMapper可接受的格式的最佳方法是什么 由于缺乏更好的想法,我目前的想法如下: sort_order = (para
asc
或desc
参数的符号来订购重新脉冲。例如:
Document.all(:order => [:created_at.desc])
将params[:sort]
和params[:direction]
转换为DataMapper可接受的格式的最佳方法是什么
由于缺乏更好的想法,我目前的想法如下:
sort_order = (params[:sort] || 'created_at').to_sym
sort_obj = params[:sort_dir] == 'desc' ? sort_order.desc : sort_order.asc
Document.all(:order => [sort_obj])
它能工作,但感觉笨重。我肯定做错了什么。我找到了另一种方法,但我不相信这是最好的方法:
sort = DataMapper::Query::Operator.new(params[:sort], params[:sort_dir])
Document.all(:order => [sort])
或者,您可以尝试使用
send
执行某些操作,如下所示:
Document.all(:order => [sort_order.send(params[:sort_dir] == "desc" ? :desc : :asc)])
不过我觉得你的方式更容易理解