通过 GET 在我的表单中提交数据的问题是超出了 url 长度。所以我转投post。
我没有使用像 will_paginate 这样的宝石,我会尝试通过 POST 调用但未能使用,我正在做这样的事情。
<%= link_to "Next", {:controller => "orders", :action => "advanced_search", :method => :post, :page => params[:page].to_i+1, :filters => params[:filters], :limit => params[:limit]}%>
问题是,尽管该方法已发布,但它仍会将参数合并到 url 本身。我基本上希望它使用新的页面参数再次提交表单。但是没有填充网址的参数。
如果有人能帮我解决这个问题,我真的很高兴。
更新:网址看起来像
http://localhost:3000/orders/advanced_search?filters%5Bapproved_between%5D=&filters%5Bcreated_between%5D=&filters%5Border_id%5D=0111T20822130100%0D%0AO11221D208211501118%0D%0AO11D208211501118%0D%0AO11T20822130100%0D%0AO121D208211501118%0D%0AO1221D208211501118%0D%0AO1D208211501118%0D%0AO1T20822140003&filters%5Bproduct_id%5D=&filters%5Bshipped_between%5D=&filters%5Bsku%5D=&method=post&limit=50&page=2
我从中心修剪了网址。浏览器抛出错误 - Request-URI Too Large
更新2:我现在正在使用这个不起作用。(我很冒昧地认为它会在正确测试之前起作用)。
<%= form_tag :controller=> "orders", :action => "advanced_search", :new_params => params.merge(:page => params[:page].to_i+1) do %>
<%= submit_tag 'Next' %>
<% end %>
虽然这会发送 new_params,但它仍然会更改 URL,尽管表单方法是 POST。它将表单操作链接中的数据包装为 orders/advanced_search?new_params....... URGH!!!!