我有一个“搜索”页面,其中包含一些控件,下面是搜索页面代码:
<%= form_for :search, :url => { :method => :get, :action => :search } do |f| %>
<table>
<tr>
<td align="center" style="vertical-align:top;">
<h2 style="color:Black; font-size: x-large;">Specs</h2>
<table>
<tr>
<td align="center">
<input type="text" name="tf_Zip" Style="text-align: left;" BackColor="#e5e5e5" Width="180px" ForeColor="Gray" Font-Size="Large">
</td>
</tr>
</table>
<table>
<tr>
<td>
<div class="button">
<input type="submit" name="search" value="Search" class="buttonSearch">
</div>
</td>
</tr>
</table>
</td>
<td align="center" style="vertical-align:top;">
<h2 style="color:Black; font-size: x-large;">
Result
</h2>
<% @user_zip.each do |uzr_zip| %>
<h1><%= uzr_zip.First_Name %></h1>
<% end %>
<table id="searchResult" width="100%" runat="server">
<tr>
<td bgcolor="#CCDBE0">
Image:
</td>
<td bgcolor="#CCDBE0">
<%= f.label(:zip, "Mentor") %>
</td>
</tr>
</table>
</td>
</tr>
</table>
<% end %>
当我试图将文本框值输入控制器页面时,如下所示
def search
@students=Students.all
@blah = params[:search][:tf_Zip]
end
render 'search'
end
然后它给了我一个错误,在这一行@blah = params[:search][:tf_Zip]
undefined method `[]' for nil:NilClass
Kindle帮助我。感谢
答案 0 :(得分:2)
我认为你的参数[:搜索]是零? 所以你可以使用
@blah = params[:tf_Zip]
或更改您的输入字段
<%= f.text_field :tf_Zip %>
或者您可以像这样使用
<input type="text" name="search[tf_Zip]" Style="text-align: left;"
BackColor="#e5e5e5" Width="180px" ForeColor="Gray" Font-Size="Large">
答案 1 :(得分:1)
查看你的日志:你会看到params中会发生什么,然后你会看到为什么params[:search][:tf_Zip]
不起作用。
错误有效地告诉您,params[:search]
为零,并且您无法在零上致电[tf_Zip]
。
你的问题就在这一行:
<input type="text" name="tf_Zip" Style="text-align: left;" BackColor="#e5e5e5" Width="180px" ForeColor="Gray" Font-Size="Large">
它会填充params[:tf_Zip]
,因为它的名称是"tf_Zip"
。如果您希望它填充params[:search][:tf_Zip]
,那么您应该将name属性设置为search[tf_Zip]
。
使用rails表单字段帮助程序会更好。我不知道你为什么在form_for中有这么多原始html。
<input type="text" name="tf_Zip" Style="text-align: left;" BackColor="#e5e5e5" Width="180px" ForeColor="Gray" Font-Size="Large">
可以替换为
<%= f.text_field :tf_Zip %>
将填充params[:search][:tf_Zip]
对于其他属性(样式等),您应该使用css设置它们。 Rails可能会自动在该字段上放置一个类,您可以使用它来执行此操作。可以使用“样式”(注释小写)属性,但它很笨拙,因为它不允许您使用css重新显示字段(更一般地说,您的网站)。
答案 2 :(得分:0)
您是否检查过params[:search]
是否为零?如果是,则尝试拉[:tf_Zip]
将导致该错误。
通常,您从一个控制器操作提交表单,并在另一个操作中处理结果。
你的陈述end
看起来错了。