如何修复运行Test :: Unit测试时产生的警告

Eth*_*han 2 ruby forms ruby-on-rails

我在Test :: Unit输出中收到此警告...

/usr/local/bin/ruby -I.:lib:test -rtest/unit -e "%w[test/functional/sessions_controller_test.rb].each { |f| require f }" | unit_diff -u
Loaded suite -e
Started
.../Users/ethan/project/mtc/contactdb/app/views/sessions/new.html.haml:30: warning: multiple values for a block parameter (0 for 1)
    from /usr/local/lib/ruby/gems/1.8/gems/haml-2.0.8/lib/haml/helpers/action_view_mods.rb:142
[...repeated eight times...]
Run Code Online (Sandbox Code Playgroud)

我认为相关部分是:

/contactdb/app/views/sessions/new.html.haml:30: warning: 
  multiple values for a block parameter (0 for 1)
Run Code Online (Sandbox Code Playgroud)

看着我的Haml文件,我把它缩小到这个片段(我想)......

- form_tag( recover_login_path, :method => 'get') do |f|
  %p
    = text_field_tag :email, '', { :size => '35', :maxlength => '255' }
Run Code Online (Sandbox Code Playgroud)

recover_login 是一条命名路线.

我查看了API文档form_tag.似乎我的代码遵循他们在示例中的内容.

Ale*_*yne 6

form_tag只有在|f|使用模型对象时才传递表单构建器对象.

form_tag @user, :method => :get do |f|
  f.text_field :first_name
end
Run Code Online (Sandbox Code Playgroud)

但是在没有传入模型对象的情况下构造自己的表单路径时,不会传入或使用块参数.

form_tag user_path(@user.id), :method => :get do
  text_field :user, :first_name
end
Run Code Online (Sandbox Code Playgroud)


Sar*_*Mei 5

form_tag块不带参数.所以删除|f|,警告应该消失.