2

这是我的 route.rb:

match "search" => "welcome#search" , via: [:get, :post]

这是我在欢迎控制器中的搜索方法:

def search
    @search = Poem.search(params[:q])
    @poems = @search.result(distinct: true).page(params[:page]).per(15)
  end

这是我的搜索视图:

<%= search_form_for @search, url: search_path , html: { method: :post }  do |f| %>
  <%= f.label :content_cont %>
  <%= f.text_field :content_cont %>
  <%= f.submit %>
<% end %>

<%= render :partial => 'show' %>

这是我的部分节目:

<%= paginate @poems%>
.... ( other stuff)

我正在使用 ransack 执行高级搜索,它确实有效,但分页链接是这样的:

http://0.0.0.0:8080/search?authenticity_token=oiOmBeY80DH0zAN5lST%2BCo355phcr3TGqOSlTQ1qtlc%3D&commit=Search&page=2&q%5Bcontent_cont%5D=&utf8=%E2%9C%93

一种发布/获取问题。

有什么建议吗?

4

1 回答 1

0

我知道这已经晚了 2 年,但是这个其他解决方案对我有用,我只是在这里交叉发布:

https://github.com/amatsuda/kaminari/issues/182#issuecomment-122124373

我找到了一种方法,基本上只是将分页链接的值作为输入字段附加到表单中,这样您就可以避免在地址栏中使用 url 参数,还可以防止 HTTP 414 错误。

$(function() {
  $('.pagination a').on('click', function(e){
    e.preventDefault();
    e.stopImmediatePropagation()
    $('form').append("<input type='text' name='page' value=" + e.target().text() + "/>");
    $('form').submit();
  });
});

请让我知道这是否解决了您的问题,或者这不是您要找的!

希望对你有帮助,玩得开心!

于 2015-07-16T22:49:04.247 回答