2009-03-07 30 views
9

Cách thực hiện đúng các hộp kiểm có liên quan đến một câu hỏi nhất định trong Ruby on Rails là gì? Hiện tại tôi có:Hộp kiểm trên 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> 

Tôi cũng muốn có thể tự động kiểm tra các mục đã chọn trước đó (nếu biểu mẫu này được tải lại). Làm thế nào tôi sẽ tải các params vào giá trị mặc định của những?

Trả lời

14

Bạn đang xem xét những điều sau đây:

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

Mặc dù nếu bạn đã có một mô hình Feature, với một bảng features và mối quan hệ has_many :features, bạn có thể muốn điều này:

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

biến địa phương không xác định hoặc phương thức 'các tính năng 'cho # alamodey

+0

Vâng, mô hình nào có liên kết các tính năng và biến nào được lưu vào? @bài báo? @product? :) – vladr

+0

Trên thực tế, tại sao không đăng toàn bộ mã cho hành động xem _and_ của bạn (từ trình điều khiển) _and_ các mô hình có liên quan? – vladr

Các vấn đề liên quan