2015-04-06 47 views
0

我们需要传递(可能是几千人)的路径在轨大阵的id:如何将大数组传递给Rails路径?

rails_path(ids: large_id_array) 

还有就是Request-URI Too Large错误发展弹出合格2700个ID的数组。将数组传递给导轨路径时的大小限制是多少?有没有办法绕过尺寸限制?谢谢。

+0

没有用Ruby或Rails的限制,该限制通常是你正在运行进程的服务器...更大的服务器可以处理更多的请求......你为什么需要将这么多数据传递给数组?我们可以看到一个问题的例子吗? – abbott567

+0

abbott567,我们正试图找到一种方法来将当前页面导出为带有自定义操作的csv文件。这就是为什么我们需要将所有ID传递给自定义动作,有时候ID可能很多。 – user938363

回答

4

,只要你想用post数据(你试图通过GET PARAMS)您可以在路径中传递尽可能多的ARGS:

  • GET PARAMS可见在URL(例如:/users?is_admin=trueparams[:is_admin]在这种情况下,等于"true"
  • POST PARAMS在URL中不可见(例如,当您填写用户名/密码字段后单击“登录”按钮时,出于明显的安全原因,您不需要想要打印URL中的字段)

在你的情况,你应该通过ID作为post数据。如何在请求中发送POST参数?只要问link_to使用POST方法而不是GET

link_to 'Click here!', rails_path(ids: large_array_of_ids), method: :post 

另一种方式来创建一个POST链接:

# HAML code 
= form_tag rails_path(ids: large_array_of_ids) do 
    = submit_tag 'Click here!' 

# ERB code 
<%= form_tag rails_path(ids: large_array_of_ids) do %> 
    <%= submit_tag 'Click here!' %> 
<% end %> 
+0

MrYooshiji,添加方法后的错误是一样的::post。 webrick web服务器(rails development)的限制是什么? – user938363

+0

不,这不是问题。您正尝试访问超过允许长度的网址。我会用'form_tag'方法在一秒内更新我的答案 – MrYoshiji

+0

link_to正是我们用来在表单上嵌入CSV链接的东西。 – user938363

相关问题