Frage

Ähnlich wie diese Frage: Ankreuzfelder on Rails

Was ist der richtige Weg, Radio-Buttons zu machen, die auf eine bestimmte Frage in Ruby on Rails verwandt sind? Im Moment habe ich:

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

Ich mag auch in der Lage sein, automatisch die zuvor ausgewählten Elemente zu überprüfen (falls diese Form wurde neu geladen). Wie würde ich die params in den Standardwert dieser laden?

War es hilfreich?

Lösung

Wie in diese früheren Post , mit einer leichten Drehung:

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

Wo

@theme = params[:theme]

Andere Tipps

Die gleichen wie V, hat aber mit jedem Optionsfeld zugeordnet Etiketten. das Etikett einem Klick überprüft das Optionsfeld.

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

Haml verwenden, immer unnötigen br Tags entfernen, und Verschachtelung Eingänge innerhalb Etiketts, so dass sie ohne passende Etiketten-IDs ausgewählt werden. Auch mit form_for. Ich würde dies berücksichtigt folgendes Best Practices sein.

= 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

Ich würde vorschlagen, einen Blick auf formtastic

mit

Es macht Optionsfeld und Kontrollkästchen Sammlungen erheblich einfacher und übersichtlicher. Ihr Code aussehen würde wie folgt:

    <% 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 ist weitgehend unauffällig und kann gemischt und mit der „klassischen“ Form Builder angepasst werden. Sie können auch die formtastic CSS-Klasse für die Form außer Kraft setzen, wie ich mit
oben tat     :html => {:class => 'my_style'}

Haben Sie einen Blick auf die einschlägigen Railscasts.

Update: Ich habe vor kurzem umgezogen, um Einfaches Formular , die auf ähnliche Syntax formtastic aber ist leichter und vor allem hinterlässt das Styling zu Ihrer eigenen CSS.

Hmm, von dem docs sehe mir nicht, wie Sie die ID auf der Radiobuttons einstellen ... das Label des für Attribut versucht, auf die ID im Radio zu verbinden.

Schienen docs für radio_button_tag

Wie gesagt, aus dem doc, dass erste param ist der „Name“ ... die, wenn sie das ist, was es schafft, sollte Gruppe sie alltogether. Wenn nicht, seine vielleicht ein Fehler?

Hmm, Wunder, wenn diese behoben worden: http://dev.rubyonrails.org/ticket/2879 http://dev.rubyonrails.org/ticket/3353

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top