从视图页面获取文本字段值到控制器页面

时间:2014-03-05 09:22:19

标签: ruby-on-rails

我在视图页面中有一个文本字段“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

请建议我在哪里弄错,等待你的回复。感谢

1 个答案:

答案 0 :(得分:2)

这很可能是Rails处理form_for的问题 - 我们只使用过它的实例变量(可以用资源填充):

<强>的form_for

  

表单助手旨在使资源处理变得更加容易   与使用vanilla HTML相比。

     

通常,用于创建或更新资源的表单反映了   资源的身份有几种方式

     

(i)表格的网址   发送到(表单元素的action属性)应该导致a   请求被路由到适当的控制器操作(使用   适当:在现有资源的情况下为id参数)

     

(ⅱ)   输入字段应以控制器中的方式命名   它们的值出现在params散列中的适当位置,

     

(iii)表示最初的表格时的现有记录   显示,输入与资源属性对应的字段   应该显示这些属性的当前值


form_tag

我强烈建议切换到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