如何使用rails check_box?

时间:2012-03-09 15:57:36

标签: ruby-on-rails

我有一个控制器:

class PortTestingController < ApplicationController
    def index
        @ports = {"80" => false, "443" => false, "2195" => true, "28009" => false}
    end
end

这就是我的看法:

- @ports.each_with_index do |(key,value), index|
      - fields_for "ports[#{index}]", port do |f|
        f.checkbox "#{key}" "#{key}"
      =key

我一直在查看check_box的文档:

http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-check_box

我不知道该为我的复选框写什么。方法是什么?我可以传递哪些选项?什么是检查值和未检查值?

1 个答案:

答案 0 :(得分:1)

这是ActionView的一个令人困惑的方面。

由于您正在呼叫f.check_box,而不仅仅是check_box(至少您将在修复错字时),您实际调用的函数就是这个:

http://api.rubyonrails.org/classes/ActionView/Helpers/FormBuilder.html#method-i-check_box

但是,FormBuilder方法只是将f表示的对象作为第一个参数传递给FormHelper。因此,您可以将其视为f.check_box ...等同于check_box f.object ...

method是您要设置的ActionView属性。

可以传递各种options,但我发现我通常会通过{}

如果选中该复选框,则checked值是您要传递的值。默认情况下,它将为1.同样,如果取消选中该复选框,则表单会传递unchecked。有时我发现我想要反转复选框的极性,并且我想跟踪未选中的复选框,因此我将checked设置为0并将unchecked设置为1.

现在到了更重要的一点。所有这些ActionView方法都适用于您目前没有的ActiveRecord模型。您的控制器未将@ports设置为从ActiveRecord::Base派生的值。我想你应该多读一些。