我正在寻找关于让Rails应用程序的最终用户查看文件的最佳方法的建议,设置模型的“find”方法返回的结果集的排序顺序。换句话说,我希望用户能够从选择列表中选择他们的排序顺序。
最初,我认为我可以把我放在:order参数中的字符串放入,但从安全的角度来看,这似乎是一个坏主意。
我想我总是可以使用基于选择列表中的值的开关,但这看起来有点笨重。
谢谢你的期待。
答案 0 :(得分:4)
我会使用AR :: Base#column_names来清理输入。类似的东西:
@models = Model.find(:all, :order => params[:sort].select({|name| Model.column_names.include? (name) } ).join(',') )
您可以通过一些预处理对此进行扩展,以改变您是否要使用每个键对升序或降序进行排序。希望这有帮助!
答案 1 :(得分:2)
这可能超出了你想要的范围,但最近,我一直依靠javascript来处理后续的排序。一个很好的原型表分类器是Tablekit(http://www.millstream.com.au/view/code/tablekit),它不引人注目,快速且易于使用。它还包括诸如就地编辑和列大小调整等细节。
答案 2 :(得分:0)
rails可以从cakephp scaffold(cakephp中的index()上的paginator sorter复制)