Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 如何修复Rails3中请求URI过大的错误?_Ruby On Rails 3_Search - Fatal编程技术网

Ruby on rails 3 如何修复Rails3中请求URI过大的错误?

Ruby on rails 3 如何修复Rails3中请求URI过大的错误?,ruby-on-rails-3,search,Ruby On Rails 3,Search,我有一个错误说: 请求URI太大 实际上,我正在尝试在我的实验性rails 3应用程序上添加一个搜索功能,它接受字符串和日期作为搜索参数。由于某些原因,当我点击submit按钮进行搜索时,我的浏览器中的URL非常长,我遇到了上面提到的错误 这是我的型号的代码trap.rb: 在视图index.html.erb中: 陷阱1.0 '获取'执行%> 员工代码: 日期输入: 无%> EMP代码 日期输入 “你确定吗?”,:method=>:delete%> 谁能告诉我这个有什么问题吗?如果你知道

我有一个错误说:

请求URI太大

实际上,我正在尝试在我的实验性rails 3应用程序上添加一个搜索功能,它接受
字符串和
日期作为搜索参数。由于某些原因,当我点击submit按钮进行搜索时,我的浏览器中的URL非常长,我遇到了上面提到的错误

这是我的型号的代码
trap.rb

在视图
index.html.erb
中:

陷阱1.0 '获取'执行%> 员工代码: 日期输入:

无%>

EMP代码 日期输入 “你确定吗?”,:method=>:delete%>

谁能告诉我这个有什么问题吗?如果你知道一些替代方案。请帮助…

我在使用谷歌的openID进行身份验证时出现了这个错误。事实上,他们用几百个GET参数将我重定向回了自己的应用程序。我不知道问题出在哪里,但我没有使用内置的Rails服务器,而是开始使用thin,错误神奇地消失了。必须是服务器内部处理它们的方式


尝试从rails根目录中安装精简版。
gem-install-thin,然后
thin-start

如果您想继续使用webbrick,只需转到
ruby-version/lib/ruby/version/webrick/httprequest.rb中的第246行和第247行,然后更改bytesize数字,我只是将它们加倍:

@request_line = read_line(socket, 2048) if socket
if @request_line.bytesize >= 2048 and @request_line[-1, 1] != LF

你有关于为什么这个“瘦”的东西会在这个案例中起作用的任何信息吗?我从下面的答案猜测webrick不能(不经过修改)处理这么大的url。
class TrapsController < ApplicationController

 def index
  @traps = Trap.search(params[:search_empcode], params[:search_date_entry])

  respond_to do |format|
   format.html # index.html.erb
   format.xml  { render :xml => @traps }
  end
 end

 .
 .
 .
end
<h2>TRAP 1.0</h2>

<%= form_tag traps_path, :method => 'get' do  %>
 <p>
  Employee Code: <%= text_field_tag :search_empcode, params[:search_empcode] %>
  Date Entry: <%= date_select :search_date_entry, params[:search_date_entry] %>
 </p>

 <p class="buttons"> <%= submit_tag "Search", :name => nil %></p>
<% end %>

<table>
 <tr>
  <th>Empcode</th>
  <th>Date entry</th>
  <th></th>
  <th></th>
  <th></th>
 </tr>

 <% @traps.each do |trap| %>
 <tr>
  <td><%= trap.empcode %></td>
  <td><%= trap.date_entry %></td>
  <td><%= link_to 'Show', trap %></td>
  <td><%= link_to 'Edit', edit_trap_path(trap) %></td>
  <td><%= link_to 'Destroy', trap, :confirm => 'Are you sure?', :method => :delete %></td>
 </tr>
 <% end %>
</table>

<br />

<%= link_to 'New Trap', new_trap_path %>
@request_line = read_line(socket, 2048) if socket
if @request_line.bytesize >= 2048 and @request_line[-1, 1] != LF