0

由于 URI 请求变得太大而浏览器无法处理,我将高级订单表单从 GET 切换为 POST。一切正常,除了意志分页。它不断将页面添加到 url 本身http://localhost:3000/orders/advanced_search就像http://localhost:3000/orders/advanced_search?page=2失败一样,因为这是一个 post 调用,而不是一个 get 调用。

有什么方法可以只更新 params[:page] 但不对链接做任何事情?

我以前只是打电话<%= will_paginate @orders["order_items"] %>,当它是一个 GET 电话时效果很好

@orders["order_items"] = @orders["order_items"].paginate(:page => params[:page], :per_page => limit, :total_entries=>@orders["total"])

我想要的很简单,将其添加到参数中,但不要将其添加到链接中。

4

2 回答 2

1

发布的另一个答案是错误的。will_paginate 不是为处理发布请求而构建的。

您选择“使” will_paginate 与发布请求一起使用包括:

编写一些javascript到:

  • preventDefault 点击 will_paginate 生成的链接

$(".pagination li a").click(function(e){ e.preventDefault(); ....

  • 通过点击的链接找到目标页面。

(下面的代码假设所有 will_paginate 链接都有一个查询字符串......它们确实如此。但请注意,如果您通过 will_paginate 的 params 选项在控制器中传递更多参数,则此特定代码行将不起作用。你不应该放在首位,因为我们正在尝试实现发布请求。)

var tp_id = $(this).attr("href").split('?page=')[1]

  • 根据单击的 will_paginate 链接生成具有正确名称属性的隐藏输入。

$('form').append("< input type='hidden' name='page' value='" + tp_id +"' >")

  • 最后发布到搜索表单的控制器操作。

$('form').submit()

。完毕。我希望这能让你走上正确的道路。

于 2014-02-26T20:05:55.747 回答
-1

您可以将参数添加到 will_paginate

https://github.com/mislav/will_paginate/wiki/API-documentation

<%= will_paginate @orders['order_items'], :params => { :method => :post } %>

如果它不起作用,请将完整的控制器和操作设置为参数。

于 2013-03-22T10:40:00.250 回答