سؤال

ما هي الطريقة الصحيحة للمربعات التي ترتبط على سؤال معين في روبي على القضبان؟ في هذه اللحظة لدي:

<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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top