【问题标题】:Can't sort table in rails无法在rails中对表格进行排序
【发布时间】:2012-04-04 06:55:13
【问题描述】:

我在 Rails 中对单列表进行排序时遇到问题。每行代表一个对象(一篇文章)并包含其所有属性(namecontentcreated_atuser 等)。搜索功能工作正常(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 =&gt; "%#{params[:search].downcase}%")
  • 谢谢..我会采纳你的建议

标签: ruby-on-rails sorting html-table


【解决方案1】:

使用reorder 覆盖任何默认排序。

Article.reorder('name').paginate(:per_page =&gt; 15, :page =&gt; params[:page])

【讨论】:

  • 成功了!哦,伙计,不敢相信我在一个简单的错误上浪费了这么多时间。谢谢
【解决方案2】:

我推荐我的 gem simple-search 来解决这些问题。这可能太简单了,但值得一试。

【讨论】:

  • 您能描述一下您的宝石如何有帮助吗?一个简短的代码示例会创造奇迹。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
相关资源
最近更新 更多