我在视图页面中有一个文本字段“tf_Designation”,见下文:
<% form_for(:search) do |f| %>
<table>
<tr>
<td align="center">
<%= f.text_field :tf_Designation,placeholder: "Designation" %>
</td>
</tr>
</table>
<% end %>
我想将文本字段值放入控制器页面,我的行为如下:
def search
@blah=params[:search][:tf_Designation]
if !params[:search][:tf_Designation].blank?
@Designation = params[:search][:tf_Designation]
render '/index'
end
end
And I do not have search model.
但它在这一行@blah=params[:search][:tf_Designation]
给了我错误。错误如下:
undefined method `[]' for nil:NilClass
请建议我在哪里弄错,等待你的回复。感谢
答案 0 :(得分:2)
这很可能是Rails处理form_for
的问题 - 我们只使用过它的实例变量(可以用资源填充):
<强>的form_for 强>
表单助手旨在使资源处理变得更加容易 与使用vanilla HTML相比。
通常,用于创建或更新资源的表单反映了 资源的身份有几种方式
(i)表格的网址 发送到(表单元素的action属性)应该导致a 请求被路由到适当的控制器操作(使用 适当:在现有资源的情况下为id参数)
(ⅱ) 输入字段应以控制器中的方式命名 它们的值出现在params散列中的适当位置,
(iii)表示最初的表格时的现有记录 显示,输入与资源属性对应的字段 应该显示这些属性的当前值。
我强烈建议切换到form_tag
,因为这会处理易腐数据:
#app/views/elements/_search.html.erb
<%= form_tag "/search" do %>
<%= text_field_tag :tf_Designation, nil, placeholder: "Designation" %>
<%= submit_tag "Search" %>
<% end %>
#app/controllers/your_controller.rb
def search
@designation = params[:tf_Designation]
unless @designation.blank?
render '/index'
end
end