Ruby on rails 无法将参数传递给控制器
我在index.haml中有以下haml代码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
%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