Ruby on rails 无法将参数传递给控制器

Ruby on rails 无法将参数传递给控制器,ruby-on-rails,haml,Ruby On Rails,Haml,我在index.haml中有以下haml代码 %h1.content-header{id: 'content-header'} HEADER %section.form %form.standard{action: some_path, method: 'get'} %fieldset.search{'aria-labelledby' => 'content-header'} %input{type: 'search', name: 'name', placehol

我在index.haml中有以下haml代码

%h1.content-header{id: 'content-header'} HEADER
%section.form
  %form.standard{action: some_path, method: 'get'}
    %fieldset.search{'aria-labelledby' => 'content-header'}
      %input{type: 'search', name: 'name', placeholder: 'something', role: 'textbox'} -----(6)
    %fieldset.input-actions
      %input.primary-action{type: 'submit', value: 'search' , name: 'invokeSearch'}
我的控制器中有以下内容

def index    
   Rails.logger.debug "#{params[:name]}"
    unless @invalid_characters
      unless params[:name].blank?
       ....
       ....
       ....

问题是如果我将第6行中的名称“name”改为“name:”test“<代码>参数[:测试]在我的控制器中始终为空。但如果我使用name:'name',params[:name]似乎可以工作。不知道我在这里做错了什么

如果您使用rails,您可能会从使用表单帮助程序生成表单中获益。例如,forms_For可以让您直接访问模型中的内容。它可能看起来像这样

= forms_for @thing do |f|
  = f.text_field :name
  = f.text_field :test
  = f.submit
在这种情况下,params映射中将有模型实例的映射。差不多

params[:thing][:name]

您可以获取该地图并将其传递到模型中以创建或更新它。如果您不希望与模型紧密耦合,那么有一种form_-tag方法,它可以做几乎相同的事情,只是您需要更明确地说明值的去向。字段直接在参数中结束,而不是在模型散列中结束

要查看参数是如何输入的,可以使用inspect方法

puts "params: #{params.inspec}"
或安装撬杆,以设置断裂点

binding pry

一些想法。希望对你有用。我认为您应该从尝试使用rails表单帮助程序开始,它可能会自行解决。

您是否尝试过
呈现文本:params.inspect并返回
,而不是只调试
params
中的一个键?也许您更改了文件但忘记重新加载页面?您是否在浏览器中执行了“查看源代码”以确保输入字段在标记中发生了更改?尝试了该操作后,名称似乎是test…因此您遇到了params.inspect显示键“test”,但params[:test]为空的情况?{“test”=>nil,“invokeSearch”=>“Search”,“action”=>“index”,“controller”=>“sources”}不确定为什么它没有从搜索框中提取值
binding pry