0
我想使用kaminari gem來分頁搜索結果。由於gem不會「污染」ActiveRecord :: Base和Array,因此kaminari實際上是我首選的方式(從架構角度來看)。不幸的是,Rails 3和它的延遲加載概念使得事情有點混亂(至少在我的情況下)。Rails 3 +延遲加載+ Kaminari分頁+ HAML
在我的HAML模板中,我想列出所有的搜索結果。當結果集爲空時,我想顯示一條消息,告訴用戶未找到結果。在過去,我可以做到以下幾點:
- unless @results.empty?
... search results ...
- else
... no results found ...
= paginate @results
因爲.empty?不強制加載這顯然不再在Rails 3中工作。Jep,我可以在我的查詢中使用。強制加載。不幸的是,所有返回一個Array和kaminari的分頁View輔助函數不能與Arrays(正確的哲學imho)一起使用。我很好奇你將如何處理這種情況。任何最佳實踐?我所有的嘗試都以醜陋的結構結束(如下圖)。 :/
爲了讓事情更清楚一點:
我的控制器動作:
helper_method :keys
def groups
@results = []
if params[:query].present?
@results = Group.public
.where({:body.matches_any => keys} | {:subject.matches_any => keys})
.order('groups.updated_at DESC')
.page(params[:page])
.per(1)
end
respond_to do |format|
format.html
end
end
我的 「醜陋」 HAML,模板:
%h1= "Search results for \"#{params[:query]}\""
%br
%ol
- @results.each do |group|
%li
= link_to group.subject, group
%br
= group.body
%br
= group.created_at
- if @results.empty?
%div No results found ...
- else
=paginate(@results)
這裏的問題:它會創建一個ol標籤,但沒有找到結果。
任何想法?
在此先感謝!