如何修复Rails 3中的Request-URI Too Large错误?

| 我有一个错误说: 请求URI太大 实际上,我正在尝试在我的实验性Rails 3应用程序上添加搜索功能,该应用程序接受ѭ0和ѭ1作为搜索参数。由于某些原因,当我单击“提交”按钮进行搜索时,我的浏览器中的URL很长,并且出现上述错误。 这是我的模型
trap.rb
的代码:
class Trap < ActiveRecord::Base

 def self.search(empcode, date_entry)
  if empcode and date_entry
   where(\'empcode LIKE ? and date_entry = ?\', \"%#{empcode}%\", \"#{date_entry}\")
  else
   scoped
  end
 end
end
在控制器
traps_controller.rb
中:
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
并在视图
index.html.erb
中:
<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 %>
有人可以告诉我这是怎么回事吗?如果您知道一些替代方法。请帮助...
已邀请:
实际上,我在针对Google的openID进行身份验证时遇到了此错误,他们使用几百个GET参数将我重定向到了自己的应用中。我没有弄清楚问题出在哪里,但是我没有使用内置的Rails服务器,而是开始使用Thin代替,错误消失了。必须只是服务器内部处理它们的方式。 从rails根目录尝试
gem install thin
,然后再
thin start
如果要继续使用webbrick,只需转至
ruby-version/lib/ruby/version/webrick/httprequest.rb
中的246和247行并更改字节大小数字,我将它们加倍:
@request_line = read_line(socket, 2048) if socket
if @request_line.bytesize >= 2048 and @request_line[-1, 1] != LF

要回复问题请先登录注册