无法将参数传递给控制器

时间:2013-11-27 02:15:33

标签: 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', 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]似乎有效。不知道我在这里做错了什么

1 个答案:

答案 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表单助手开始,它可能会自行解决。