搜索表单结果的分页不会为后续页面返回任何内容(Kaminari + Rails)

时间:2012-04-11 16:55:05

标签: ruby-on-rails pagination kaminari

所以我有一个返回Kaminari分页数组的搜索表单。第一页总是返回一个结果列表,但是所有后续页面链接的“GET”都没有返回结果,我不知道为什么!

以下是我的控制器中的搜索方法

def writer_search
  @writers = Kaminari.paginate_array(@results).page(params[:page]).per(10)
end

def writer_search_submit
  @results = #my big array of results, this part works fine
  @writers = Kaminari.paginate_array(@results).page(params[:page]).per(10)
  render 'writer_search'
end

查看代码

 =form_tag(writer_search_submit_path, :method => 'post') do
   %input{:name => 'keywords', :id => 'keywords', :value => params[:keywords]}
   = submit_tag "Search"

 - @writers.each do |writer|
   #show the results

 = paginate @writers

点击分页链接时的服务器日志

Started GET "/editors/writer_search?commit=Search&keywords=business&page=2"
  Processing by EditorsController#writer_search as HTML
  Parameters: {"commit"=>"Search", "keywords"=>"business", "page"=>"2", "utf8"=>"✓"}

第一个渲染页面包含我的数组的前10个结果(在这种情况下,有数百个结果)。单击任何分页链接进行GET并返回没有结果的页面。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您似乎已在@results中定义了writer_search_submit,但未writer_search

"/editors/writer_search?commit=Search&keywords=business&page=2"的GET请求通过EditorsController#writer_search,其中@results未定义(因此您获得的页面没有结果)。

更新:(感谢Thilo)

也许您可以使用before_filter为需要它的所有操作加载@results?

答案 1 :(得分:0)

Rails不会在实际搜索页面上呈现搜索结果,而是在您要搜索的任何路径的默认索引页面上。