如何使用will_paginate进行POST调用而不是GET调用?

时间:2014-08-14 05:31:25

标签: ruby-on-rails will-paginate

当我使用rails gem will_paginate对页面进行分页时,如何进行调用而不是调用?

在控制器中我有

@bills = Bill.where(some_condition)  # returns collection
@bills = @bills.paginate(:page => params[:page], :per_page => 5)

在视图中使用了表结构,最后使用了<%will_paginate%>,因此第1页显示,但是当我点击&#34; next&#34;或&#34;第2页&#34;然后GET req。去,我想把它改成POST电话,是否可能?

2 个答案:

答案 0 :(得分:2)

我同意antiqe的评论,通过POST请求分页是不对的。

但是如果你已经决定使用POST,请阅读以下内容:

  1. 修改will_paginate

    来源enchante的评论

      

    使用will_paginate默认不支持发布,如果你坚持使用post,你需要为will_paginate自定义LinkRender,参见参考:github.com/mislav/will_paginate/wiki/Link-renderer

  2. 通过自定义POST请求

    来自source

      

    在HTML中进行分页的唯一正确方法是呈现一个表单,其中每个分页链接都是一个提交按钮,其属性名称为&#34; page&#34;设置为页码作为值。此表单还应保留现有搜索参数,因此它应为每个当前参数设置隐藏字段。单击提交按钮将重新提交高级搜索,页面参数已更改。

  3. 通过自定义ajax请求

    或者您可以编写一个javascript来阻止分页链接上的默认获取请求并发送ajac post请求。查看更多here

  4. will_paginate不支持POST的原因是没有人使用它。

答案 1 :(得分:0)

这是可能的。但不建议这样做。

@bills = @bills.paginate(:page => params[:page], :per_page => 5)

此处 params [:page] 控制应显示哪个页面,在帖子中包含:page 参数,该参数应该有效。

更新:

will_paginate默认不支持post,如果你坚持使用post,你需要为will_paginate自定义LinkRender,参见参考:github.com/mislav/will_paginate/wiki/Link-renderer