繁体   English   中英

Rails 3中的自定义表单生成器

[英]Custom Form Builder in Rails 3

我正在尝试在Rails中编写自定义表单生成器,以(除其他功能外)将CSS类自动添加到我创建的每个字段中。

我想扩展例如text_field以添加到我需要的类中。 但是下面的代码(我希望它会将行为传递给标准FormBuilder)失败,并出现错误的参数数量错误。 “参数数量错误(1..2为3)”

class BootstrapFormBuilder < ActionView::Helpers::FormBuilder
    def text_field(object_name, method, options = {})
        super(object_name, method, options)
    end
end

如果查看Rails源代码,我会看到text_field的定义为:

def text_field(object_name, method, options = {})

请帮助! (如果您抛出代码将“:class =>'some_class'”合并到选项哈希中,则奖励积分。

谢谢!

您要引用的Rails源显示text_field有两个参数,而不是三个。 请参阅来自github的FormBuilder源代码。

因此,将您的表单构建器类更新为:

class BootstrapFormBuilder < ActionView::Helpers::FormBuilder
    def text_field(method, options = {})
        super(method, options)
    end
end

然后,它的用法,包括要添加的class选项:

<%= form_for :foo, builder: BootstrapFormBuilder do |f| %>
  <%= f.text_field :foo_field, class: 'bootstrap_text_field' %>
<% end %>

您传递给默认FormBuilder任何选项也可用于此子类,因此,请像使用默认表单生成器一样使用class选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM