2014-04-12 24 views
1

我正在嘗試在Rails中編寫一個自定義表單生成器,以便自動爲每個創建的字段添加一個CSS類。Rails 3中的自定義表單生成器

我想擴展,例如,在我需要的類中添加text_field。但是,我期望的代碼只是將行爲傳遞給標準FormBuilder,失敗的參數數量錯誤。 「錯誤的參數數目(3 1..2)」

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 = {}) 

請幫助! 「:類=>‘some_class’」(獎勵積分,如果你在代碼合併扔!到沿途的選項哈希

感謝

回答

2

你指的是顯示了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選項,你會默認表單生成器。

+0

有沒有可能將我指向f.select的源代碼?我沒有在上面給出的FormBuilder鏈接中找到它......謝謝! –

+0

@GregRogers,'select'助手在['form_options_helper.rb'](https://github.com/rails/rails/blob/3-2-stable/actionpack/lib/action_view/helpers/form_options_helper.rb #L640) – vee