Radio buttons on Rails

后端 未结 5 882
迷失自我
迷失自我 2020-12-12 19:08

Similar to this question: Checkboxes on Rails

What\'s the correct way of making radio buttons that are related to a certain question in Ruby on Rails? At the moment

相关标签:
5条回答
  • 2020-12-12 19:24

    Using Haml, getting rid of needless br tags, and nesting inputs within label so that they may be selected without matching labels to ids. Also using form_for. I would consider this to be following best practices.

    = form_for current_user do |form|
      .form_row
        %label Theme:
        - [ 'plain', 'desert', 'green', 'corporate', 'funky' ].each do |theme|
          %label
            = form.radio_button(:theme, theme)
            = theme.humanize
    
    0 讨论(0)
  • 2020-12-12 19:37

    As in this previous post, with a slight twist:

    <div class="form_row">
        <label for="theme">Theme:</label>
        <% [ 'plain', 'desert', 'green', 'corporate', 'funky' ].each do |theme| %>
          <br><%= radio_button_tag 'theme', theme, @theme == theme %>
          <%= theme.humanize %>
        <% end %>
    </div>
    

    Where

    @theme = params[:theme]
    
    0 讨论(0)
  • 2020-12-12 19:40

    Same as V's, but has associated labels with each radio button. Clicking the label checks the radio button.

    <div class="form_row">
      <p>Theme:</p>
      <% [ 'plain', 'desert', 'green', 'corporate', 'funky' ].each do |theme| %>
        <br><%= radio_button_tag 'theme', theme, @theme == theme %>
        <%= label_tag "theme_#{theme}", theme.humanize %>
      <% end %>
    </div>
    
    0 讨论(0)
  • 2020-12-12 19:40

    Hmm, from the docs I don't see how you can set the ID on the radio buttons... the label's for attribute tries to link to the ID on the radio.

    rails docs for radio_button_tag

    That said, from the doc, that first param is the "name"... which if that is what it is creating, should group them alltogether. If not, maybe its a bug?

    Hmm, wonder if these have been fixed: http://dev.rubyonrails.org/ticket/2879 http://dev.rubyonrails.org/ticket/3353

    0 讨论(0)
  • 2020-12-12 19:41

    I would suggest having a look at formtastic

    It makes radio button and check box collections vastly easier and more concise. Your code would look like so:

        <% semantic_form_for @widget, :html => {:class => 'my_style'} do |f| %>
    <%= f.input :theme, :as => :radio, :label => "Theme:", 
    :collection =>  [ 'plain', 'desert', 'green', 'corporate', 'funky' ] %>
    <% end %>
    

    Formtastic is largely unobtrusive and can be mixed and matched with the "classic" form builders. You can also override the formtastic css class for the form as I did above with
    :html => {:class => 'my_style'}

    Have a look at the pertinent Railscasts.

    Update: I've recently moved to Simple Form which has similar syntax to formtastic but is more lightweight and especially leaves the styling to your own css.

    0 讨论(0)
提交回复
热议问题