Вопрос

Похоже на этот вопрос: Флажки на Rails

Как правильно создать переключатели, связанные с определенным вопросом в Ruby on Rails?На данный момент у меня есть:

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

Я также хочу иметь возможность автоматически проверять ранее выбранные элементы (если эта форма была перезагружена).Как мне загрузить параметры в значение по умолчанию?

Это было полезно?

Решение

Как в этот предыдущий пост, с небольшим уклоном:

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

Где

@theme = params[:theme]

Другие советы

То же, что и буквы V, но имеет соответствующие ярлыки для каждой кнопки-переключателя. Нажатие на ярлык проверяет переключатель.

<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, избавление от ненужных тегов br и вложение входных данных в метку, чтобы их можно было выбирать без сопоставления меток с идентификаторами. Также с помощью form_for. Я бы посчитал это следствием лучших практик.

= 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

Я бы посоветовал взглянуть на formtastic

Это делает коллекцию переключателей и флажков значительно проще и лаконичнее. Ваш код будет выглядеть так:

    <% 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 в значительной степени ненавязчив и может смешиваться и сочетаться с «классическим» строители форм. Вы также можете переопределить класс formtastic css для формы, как я делал выше с
    : html = > {: class = > 'My_style'}

Посмотрите на соответствующие Railscasts.

Обновление. Недавно я перешел на простую форму , синтаксис которой аналогичен Formtastic, но более легкий и, в особенности, оставляет стиль для вашего собственного CSS.

Хм, из документов я не вижу, как вы можете установить идентификатор на переключателях ... атрибут метки for пытается установить связь с идентификатором на радио.

направляет документы для radio_button_tag

Тем не менее, из документа, первым параметром является «имя» ... которое, если это то, что он создает, должно сгруппировать их вместе. Если нет, может быть, это ошибка?

Хм, интересно, если они были исправлены: http://dev.rubyonrails.org/ticket/2879 http://dev.rubyonrails.org/ticket/3353

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top