我有一个错误说:
Request-URI太大
实际上我正在尝试在我的实验性rails 3应用中添加搜索功能,该应用接受string
和date
作为搜索参数。由于某些原因,当我单击提交按钮进行搜索时,浏览器中的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 %>
有人可以告诉我这个有什么问题吗?如果你知道一些替代品。请帮忙......
答案 0 :(得分:3)
我实际上对谷歌的openID进行了身份验证,他们将我重新定向回我自己的应用程序并获得了几百个GET参数。我没有弄清楚问题是什么,但是我没有使用内置的Rails服务器,而是开始使用thin而错误地神奇地消失了。必须只是服务器内部处理它们的方式。
从rails根目录尝试gem install thin
然后thin start
。
答案 1 :(得分:3)
如果您想继续使用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