2015-05-24 28 views
3

我有以下代碼,使用最新版本的Formatastic 3.1.0。如何使用Formtastic更改標籤的類別

<%= f.input :name, :input_html => { :class => "col-lg-10" }, :label_html => { :class => "col-lg-2" }%> 

我可以改變input_html,但我找不到更改標籤html類的選項。有沒有辦法做到這一點?

輸出結果如此生成(注意省略了標籤類中的「col-lg-2」)。

<li class="string input required stringish" id="account_name_input"> 
<label for="account_name" class="label">Name<abbr title="required">*</abbr></label> 
<input id="account_name" class="col-lg-10" type="text" value="" name="account[name]"> 
</li> 
+0

你是說,':label_html'不起作用?或者是什麼問題?你能顯示這段代碼生成的HTML代碼嗎? –

+0

嗨,彼得 - 添加了HTML輸出。我希望有一個':label_html'選項,但我在文檔中找不到它(並且它不起作用,如上所示)。 – wcheung

回答

1

翻閱文檔和源代碼,我沒有看到一個內置的方法來做到這一點。 (我可能永遠是錯的。)但是,這也許猴子補丁將工作:

配置/初始化/ formtastic_monkey_patch.rb

Formtastic::Inputs::Base::Labelling.module_eval do 

    def label_html_options 
    { 
     :for => input_html_options[:id], 
     :class => (['label'] + (options[:label_class] || [])).flatten 
    } 
    end 
end 

這應該重寫Formtastic的默認label_html_options功能,由此可以看出在this file。然後通過數組添加類:

這是我的想法,但我建議在使用它之前從我的意見中獲得一個意見。

+0

感謝您的建議!我最終使用了simple_form,而我發現它更加可定製。 – wcheung

+0

@wcheung我認爲你現在一定找到了某種解決方案。但是,我一直在瀏覽Formtastic的源代碼,所以當我看到你的問題時,我想看看我能不能提出一些東西。 Formtastic確實很難定製,但我在當前的項目中堅持使用它,並試圖學習我能做的事! – februaryInk