【发布时间】:2012-04-04 06:55:13
【问题描述】:
我在 Rails 中对单列表进行排序时遇到问题。每行代表一个对象(一篇文章)并包含其所有属性(name、content、created_at、user 等)。搜索功能工作正常(Article.where),但我似乎无法按任何属性对表格进行排序,即Article.order('attribute')。我无法更改的默认值是created_at desc。我忽略了什么吗?
这是我的控制器:
def index
@title="Home"
if params[:search]
@search=params[:search]
@articles=Article.where('name LIKE ? OR category LIKE ?', "%#{params[:search]}%", "%#{params[:search]}%").paginate(:per_page => 15, :page => params[:page])
else
@articles=Article.order('name').paginate(:per_page => 15, :page => params[:page])
end
end
并查看:
<table>
<%= render @articles%>
</table>
<%= will_paginate @articles, :previous_label => "Prev", :next_label => "Next" %>
【问题讨论】:
-
OT:您可以使用命名占位符使您的
where更好一些,并且 LIKE 并不总是不区分大小写,因此您可能希望将所有内容都小写:.where('lower(name) like :pat or lower(category) like :pat', :pat => "%#{params[:search].downcase}%")。 -
谢谢..我会采纳你的建议
标签: ruby-on-rails sorting html-table