2009-02-18 1 views
2

Я получаю это предупреждение в моем выходе Test :: Unit ...Как я могу исправить это предупреждение, полученное при запуске моего 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...] 

Я думаю, что соответствующая часть:

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

Глядя на мой файл Haml, я сузили его до этого фрагмента кода (я думаю) ...

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

recover_login именованный маршрут.

Я просмотрел документы API для form_tag. Кажется, мой код следит за тем, что у них есть в примерах.

ответ

5

Блок form_tag не принимает параметров. Поэтому удалите |f|, и предупреждение должно исчезнуть.

+0

Правильное решение, но по неправильной причине. Другой ответ - технически правильный. – Fotios

6

form_tag только передается в форме объекта-строителя |f|, когда вы используете объект модели с ним.

form_tag @user, :method => :get do |f| 
    f.text_field :first_name 
end 

Но при построении собственного пути формы, не прошедшего в объекте модели, аргумент блока не передается и не используется.

form_tag user_path(@user.id), :method => :get do 
    text_field :user, :first_name 
end 
Смежные вопросы