simple_form's collection_radio_button and custom label class

前端 未结 2 678
北恋
北恋 2020-12-30 12:26

I\'m trying to make a star rating form with radio collection using FontAwesome, for this I actually need to change the label classes of the collection_radio_button input gen

相关标签:
2条回答
  • 2020-12-30 13:07

    This can be achieved by using a block:

    form_for @user do |f|
      f.collection_radio_buttons :rating, [[1, 'Bad'] ,[2, 'Ok'], [3, 'Great']],
                                 :first, :last, { item_wrapper_tag: false } do |b|
        b.radio_button + b.label(:class => "collection_radio_buttons icon-star")
      end
    end
    

    This doc can showcase some other example: http://rubydoc.info/github/plataformatec/simple_form/SimpleForm/FormBuilder:collection_radio_buttons

    0 讨论(0)
  • 2020-12-30 13:18

    In case anyone wonders how to add class to label wrapping radiobutton input when you set boolean_style = :nested here is what I came with:

    You can set option called :item_label_class when calling your input, f.e.:

    <%= f.input :type, as: :radio_buttons,
                       collection: Listing::TYPES.map{ |type| [Listing.translate_type(type), type] },
                       label: false,
                       item_label_class: 'radio' %>
    

    I wanted to automate this stuff, so I defined custom CollectionRadioButtonsInput class. You need to add to method apply_default_collection_options!:

    def apply_default_collection_options!(options)
      super(options)
      options[:item_label_class] == 'radio' if input_type == :radio_buttons
    end
    
    0 讨论(0)
提交回复
热议问题