Pulsanti di opzione su Rotaie

Simile a questa domanda: Caselle di controllo su Rotaie

Quale è il modo corretto di fare radio pulsanti che sono legati a una certa domanda in Ruby on Rails? Al momento ho:

<div class="form_row">
    <label for="theme">Theme:</label>
    <br><%= radio_button_tag 'theme', 'plain', true %> Plain
    <br><%= radio_button_tag 'theme', 'desert' %> Desert
    <br><%= radio_button_tag 'theme', 'green' %> Green
    <br><%= radio_button_tag 'theme', 'corporate' %> Corporate
    <br><%= radio_button_tag 'theme', 'funky' %> Funky
</div>

Voglio anche essere in grado di controllare automaticamente le voci selezionate in precedenza (se il presente modulo è stato ri-caricato). Come faccio a caricare i parametri in default, il valore di questi?

InformationsquelleAutor alamodey | 2009-03-08



5 Replies
  1. 75

    Come in questo post precedente, con una leggera torsione:

    <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>

    Dove

    @theme = params[:theme]
    • Si potrebbe semplificare [ 'plain', 'desert', 'green', 'corporate', 'funky' ] per %w(plain desert green corporate funky)
  2. 37

    Stesso V, ma che ha le etichette associate con ogni pulsante di opzione. Cliccando l’etichetta controlla il pulsante di opzione.

    <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>
    • Utilizzando label_tag aiuta a migliorare la UX 🙂
  3. 8

    Utilizzando Haml, sbarazzarsi di inutili tag br, e per la nidificazione ingressi all’interno etichetta, in modo tale che essi possono essere selezionati senza i corrispondenti etichette per id. Anche utilizzando form_for. Vorrei prendere in considerazione che si tratta seguendo le migliori pratiche.

    = 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
  4. 4

    Vorrei suggerire di avere uno sguardo a formtastic

    Si rende il pulsante di opzione casella di controllo collezioni molto più semplice e concisa. Il codice si presenta in questo modo:

        <% 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 è in gran parte discreto e possono essere mescolati e abbinati con la forma “classica” dei costruttori. È possibile sovrascrivere il formtastic classe css del modulo come ho fatto in precedenza con

    :html => {:class => 'my_style'}

    Avere uno sguardo alle pertinenti Railscasts.

    Aggiornamento: ho recentemente spostato Semplice Modulo che ha una sintassi simile a formtastic, ma è più leggero e, soprattutto, lascia lo stile per il proprio css.

  5. 1

    Hmm, da documenti non vedo come è possibile impostare l’ID della radio pulsanti… l’etichetta dell’attributo prova a collegare l’ID della radio.

    guide di documenti per radio_button_tag

    Che ha detto, dal doc, che prima param è il “nome”… il che, se è di questo che si sta creando, dovrebbe raggrupparle tutte insieme. Se non, forse è un bug?

    Hmm, chiedo se questi sono stati risolti:
    http://dev.rubyonrails.org/ticket/2879
    http://dev.rubyonrails.org/ticket/3353

Lascia un commento