以下是该方案:
我有一个表格,其中包含一个分组列表(ID,标题,描述等),如下面的分页,它还有一个搜索表单:
<div id="navigation" style="background:white;border:1px outset cadetblue;">
<p>
<% form_tag groups_path, :method => 'get' do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>
</p>
</div>
<table>
.....
</table>
<%= paginate @groups %>
在我的groups_controller.rb中,我有:
@groups = Group.search(params[:search])
@groups = Group.order("id").page(params[:page]).per(15)
似乎没有用。分页有效,但是当我点击时 搜索按钮它什么也没做。 搜索功能在group.rb模型中实现:
def self.search(search)
if search
find(:all, :conditions => ['description LIKE ?', "%#{search}%"])
else
find(:all)
end
end
如何解决此问题,如何使搜索表单工作并以分页方式返回结果!
答案 0 :(得分:0)
你需要将这两个调用合二为一,现在你用第二个覆盖@groups的第一个设置。
我会为您的群组模型添加范围
class Group
scope :search, lambda { |val| , find(:all, :conditions=>['description LIKE ?', "%#{val}%"]) }
end
然后你可以做
@groups = Group.search(params[:search]).order("id").page(params[:page]).per(15)
答案 1 :(得分:0)
这是这篇文章的最终答案。所有原始海报需要做的是:
@groups = Group.where("description LIKE '%#{params[:search]}%'").order('id').page(params[:page]).per(15)
在离线讨论中,它无效。事实证明他有两个宝石和kaminari宝石为他的分页。当谈到.per(15)时,他正在走出去。删除will_paginate gem修复了它!
will_paginate没有被主动升级,所以如果你有will_paginate并且你在Rails 3.X上,摆脱will_paginate而不是使用kaminari,这是一个相当轻松的交换,只需要一些css工作来格式化分页。