Rails 4 - 使用Kaminari使用Javascript重定向到下一页

时间:2014-01-28 22:41:56

标签: javascript ruby-on-rails kaminari

我目前正在使用Kaminari进行分页,我知道link_to_next_page方法。但是,我目前希望在处理并提交表单后,在分页范围中“链接到下一页”。

换句话说:

  1. 用户点击“提交”按钮
  2. 表单通过:remote => true
  3. 提交
  4. Javascript以编程方式将用户引导至下一页。
  5. 有点像:     的 create.js.erb

      <% if @result %>
        <script type="text/javascript">
          window.location.href="<%= @user.next_page %>
        </script>
      <% end %>
    

    我是否可以生成/确定下一页是什么,然后通过javascript重定向用户?

    谢谢!

    最终解决方案: 基于Kieran在下面的帮助,这是我最终做的事情:

    <% if @result %>   
      <% unless @users.last_page? %>
      window.location.href="?page=<%=@users.current_page+1 %>"
      <% else %>
          window.location.href="completed"
    <% end %>
    

    这对我来说似乎没问题。

1 个答案:

答案 0 :(得分:1)

您遇到的问题是Kaminari需要“范围”才能正确确定当前页面的下一页:

https://github.com/amatsuda/kaminari/blob/bc51fd08f9e67b8338b421f6827d7d8e54c82deb/lib/kaminari/helpers/action_view_extension.rb#L64

由于您要提交javascript,因此您需要将此范围提供给此方法以使其正常工作。在create方法的控制器中,您需要使用相同的代码来查询要分页的对象,然后让Kaminari完成剩下的工作。

@users = User.order(:name).page params[:page]

您需要确保表单也沿params[:page]

发送

然后你可以这样做:

  <% if @result && !@users.last_page? %>
    <script type="text/javascript">
      window.location.href="<%=  params.merge(param_name => (@users.current_page + 1)) %>"
    </script>
  <% end %>