分页是否适用于具有method =“POST”的表单?

时间:2013-03-22 10:33:34

标签: ruby-on-rails ruby ruby-on-rails-3

我将高级订单表单从GET切换到POST,因为URI请求变得太大,浏览器无法处理。一切都运作良好,除了会议之外。它会不断将网页添加到网址http://localhost:3000/orders/advanced_search,例如http://localhost:3000/orders/advanced_search?page=2,因为这是一个帖子调用而不是来电。

任何方式它只能更新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"])

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

2 个答案:

答案 0 :(得分:1)

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

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

将一些javascript写入:

  • 单击will_paginate生成的链接时阻止默认
  

$(“。pagination li a”)。click(function(e){   e.preventDefault(); ....

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

(下面的代码假设所有的will_paginate链接都有一个查询字符串......他们这样做。但请注意,如果你通过params选项传递更多的参数,这个特定的代码行将不起作用will_paginate ..你不应该是第一个因为我们试图获得一个邮政请求。)

  

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

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

$('form')。append(“&lt; input type ='hidden'name ='page'value ='”+ tp_id +“'&gt;”)

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

$( '形式')。提交()

.done。我希望这能让你走上正确的道路。

答案 1 :(得分:-1)

您可以为will_paginate

添加一个参数

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

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

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