Rails上的复选框

ala*_*dey 9 checkbox webforms ruby-on-rails

在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>
Run Code Online (Sandbox Code Playgroud)

我还希望能够自动检查以前选择的项目(如果重新加载此表单).如何将参数加载到这些的默认值?

vla*_*adr 14

您正在查看以下内容:

<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>
Run Code Online (Sandbox Code Playgroud)

虽然如果你已经拥有一个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>
Run Code Online (Sandbox Code Playgroud)