مربعات على القضبان
-
05-07-2019 - |
سؤال
ما هي الطريقة الصحيحة للمربعات التي ترتبط على سؤال معين في روبي على القضبان؟ في هذه اللحظة لدي:
<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>
وأريد أيضا أن تكون قادرة على التحقق تلقائيا العناصر المحددة سابقا (إذا كان هذا النموذج إعادة تحميلها). كيف لي أن تحميل بارامس إلى القيمة الافتراضية من هذه؟
المحلول
أنت تبحث في ما يلي:
<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>
لا تنتمي إلى StackOverflow