我在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'表示名称:'test'.... params[:test]
在我的控制器中始终为空。但如果我使用名字:'name',params [:name]似乎有效。不知道我在这里做错了什么
答案 0 :(得分:0)
如果您使用rails,您可能应该从使用其中一个表单助手生成表单中受益。例如,forms_for使您可以直接访问模型中的内容。它可能看起来像这样。
= forms_for @thing do |f|
= f.text_field :name
= f.text_field :test
= f.submit
在这种情况下,params地图中将有一个模型实例的地图。像
这样的东西params[:thing][:name]
或
params[:thing][:test]
您可以拍摄该地图并将其传递到模型中以创建或更新它。如果你不想与模型紧密耦合,那么form_tag方法可以做很多相同的事情,除非你需要更清楚地知道什么值去哪里。字段直接以params结尾,而不是模型哈希。
要了解您的参数是如何进入的,您可以使用检查方法。
puts "params: #{params.inspec}"
或安装pry以使用
设置断点binding pry
一些想法。希望它对你有帮助。我认为你应该从尝试使用rails表单助手开始,它可能会自行解决。