Флажки на Rails - PullRequest
       14

Флажки на Rails

9 голосов
/ 07 марта 2009

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

<div class="form_row">
    <label for="features[]">Features:</label>
    <br><%= check_box_tag 'features[]', 'scenarios' %> Scenarios
    <br><%= check_box_tag 'features[]', 'role_profiles' %> Role profiles
    <br><%= check_box_tag 'features[]', 'private_messages' %> Private messages
    <br><%= check_box_tag 'features[]', 'chatrooms' %> Chatrooms
    <br><%= check_box_tag 'features[]', 'forums' %> Forums
    <br><%= check_box_tag 'features[]', 'news' %> News
    <br><%= check_box_tag 'features[]', 'polls' %> Polls
</div>

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

1 Ответ

14 голосов
/ 07 марта 2009

Вы смотрите на следующее:

<div class="form_row">
    <label for="features[]">Features:</label>
    <% [ 'scenarios', 'role_profiles', ... , 'polls' ].each do |feature| %>
      <br><%= check_box_tag 'features[]', feature,
              (params[:features] || {}).include?(feature) %>
      <%= feature.humanize %>
    <% end %>
</div>

Хотя, если у вас уже есть модель Feature с таблицей features и отношением has_many :features, вы, вероятно, захотите следующее:

<div class="form_row">
    <label for="feature_ids[]">Features:</label>
    <% for feature in Feature.find(:all) do %>
      <br><%= check_box_tag 'feature_ids[]', feature.id,
              @model.feature_ids.include?(feature.id) %>
      <%= feature.name.humanize %>
    <% end %>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...