如何解决对远程参数定义的结果进行排序
我有这个索引操作:
def index
limit = params[:limit]
page = params[:page]
sort = params[:sort].split(',')
@term = nil
if params[:search]
@term = params[:search]
@lessons = policy_scope(Lesson).search(@term)
.order("#{sort[0]} #{sort[1].upcase}")
.paginate(page: page,per_page: limit)
else
@lessons = policy_scope(Lesson).order("#{sort[0]} #{sort[1].upcase}")
.paginate(page: page,per_page: limit)
end
end
由带有 vuetify 数据表的 vuejs 前端提供,其目的是发送一组由前端过滤和排序的课程对象。
但是,由于涉及到移动性宝石,因此没有字段名称“title”或“title_en”,因此订单停止工作。在移动性中,您有一些“假列名”,它会自动处理它以在键值表 ( https://github.com/shioyama/mobility#getting-started ) 中搜索值
所以我坐下来启动控制台并发现:
-
.order(title: :desc)
- 作品 -
.order(title_en: :asc)
- 作品 - 所有涉及字符串的东西,比如
.order('title DESC')
或.order('title_en ASC')
都不起作用,并导致类似的错误
ActionView::Template::Error (PG::UndefinedColumn: ERROR: column “title_en”不存在第 1 行:选择“课程”。* FROM “课程” ORDER BY title_en ASC LIMI...
有什么办法可以让这个工作吗?也许有什么东西可以从title:
中产生'title'
?或者其他什么魔法?
谢谢!
解决方法
您可以改为像这样调用 order
方法:
.order(sort[0] => sort[1])
将 "a" => "b"
传递给方法与传递 "a": "b"
相同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。