将背景图像或图像标签添加到带有集合的Formtastic单选按钮

时间:2011-09-02 10:08:33

标签: ruby-on-rails css ruby-on-rails-3 ruby-on-rails-plugins formtastic

我有一个用户输入信用卡数据的形式的这个形式字段:

<%= form.input :credit_card_type, :as => :radio, :collection => User.credit_card_types %>

User.credit_card_types看起来像这样:

  def self.credit_card_types
    {'Visa' => VISA, 'Master Card' => MASTER_CARD, 'American Express' => AMERICAN_EXPRESS}
  end

哪位给我以下html:

<li id="user_credit_card_type_input" class="radio optional">
  <fieldset>
    <legend class="label">
      <label>Tipo de tarjeta</label>
    </legend>
    <ol>
      <li>
        <label for="user_credit_card_type_1">
          <input type="radio" value="1" name="user[credit_card_type]" id="user_credit_card_type_1"> Master Card
        </label>
      </li>
      <li>
        <label for="user_credit_card_type_0">
          <input type="radio" value="0" name="user[credit_card_type]" id="user_credit_card_type_0"> Visa</label>
      </li>

      <li>
        <label for="user_credit_card_type_2">
          <input type="radio" value="2" name="user[credit_card_type]" id="user_credit_card_type_2"> American Express</label>
      </li>
    </ol>
  </fieldset>
</li>

鉴于此,我的问题是,如何为每个单选按钮标签添加特定的背景图像?我不能用CSS做,因为标签没有任何id,我不能(或者我不知道如何)把它放到那里。我试图添加一个image_tag,但它逃脱了html。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

Formtastic可根据您的需求进行定制。您应该能够在config / initializers中找到Formtastic配置文件。添加如下这样的一行:

Formtastic::SemanticFormHelper.builder = SemanticCustomFormBuilder

然后在lib目录中创建一个名为semantic_custom_form_builder.rb的文件

class SemanticCustomFormBuilder < Formtastic::SemanticFormBuilder

  def cicloon_special_radio_button_input
    #define your radiobuttons here
  end

end

您可以在表单中使用这样的自定义定义:

<%= form.input :credit_card_type, :as => :cicloon_special_radio_button %>