rails中的checkbox变量始终为true

时间:2013-03-18 07:30:18

标签: ruby-on-rails ruby-on-rails-3 checkbox

我有一个rails应用程序,我在我的视图上使用一个复选框来确定我的if语句的哪个部分运行。我认为这将是一项简单的任务,但即使单击提交按钮后控制台中的响应显示:“成人”=>“0”(未选中时)和“成人”=>“1”(选中时)但如果我试试

puts @application.adult

控制台只打印真实的

这是我的.html.haml文件的相关部分......这是我最近的尝试

=simple_form_for( :application, :url => users_partner_acceptance_path( application ), :method => :put ) do | f |
  .clearfix
    .column
      =f.input :full_name, label: 'Full Name', placeholder: 'Full Name'
      .help-block * please enter your legal name
      =f.input :address_1, label: 'Address', placeholder: 'Apartment, Street'
      =f.check_box_tag :adult, inline_label: 'I am over 18 years old.', as: :boolean, checked = true
      .guardian
      =f.input :guardian_full_name, label: 'Guardian Full Name', placeholder: 'Full Name'
      =render 'partner_details_errors', application: application
  =f.submit 'Show Contract', class: 'btn btn-primary', data: { 'text' => 'Create Contract', 'disabled-text' => 'Creating ...' } 

我试过

{:checked=> true}

checked: true 

而不是

checked = true

可能还有其他几个 我试过了

=f.check_box :adult 

=f.input :adult 

而不是

=f.check_box_tag :adult

在我的控制器中,我正在尝试做这样的事情:

if @application.adult == true
  # do something
else
  # do something else
end

任何建议,帮助非常感谢。谢谢!

我正在使用Rails 3.2.12

2 个答案:

答案 0 :(得分:0)

check_box_tag(name, value = "1", checked = false, options = {})

如果成人是Application类的一部分,那么您需要f.check_box而不是f.check_box_tag。否则,您应该只有check_box_tag...

= f.label :adult, "I am over 18 years old."

= f.check_box, :adult

您可以在提交时发布params哈希的内容吗?仅供参考,您不需要if @application.adult == true因为if已经这样做了。

答案 1 :(得分:0)

<%= f.check_box :hobby, {:multiple => "true"}, "hockeys", nil %>

<%= f.check_box :hobby, {:multiple => "true"}, "cricket", nil %>


这对您有所帮助。