可以对Subject.where(id: [12, 23, 11, 22, 44])可以对一个数组进行查找, 得到数组中id号的多个subject
实际应用:
_subject.html.erb中:
########!!!!重要!!!!非常重要=》<input type="checkbox" class="hidden" name="room[subject_ids][]" value="<%= subject.id %>" <%= 'checked' if subject.include_room?(room) %>/> 其中value=的值即为选中checkout时params传递的值, 所以此html中要value="<%= subject.id %>", 当选中checkout时传递该subject的id, 以方便保存
<div class="ui modal" id="placeholder-modal">
<div class="header">Choose room's subject</div>
<div class="content">
<div class="ui form">
<%= form_tag "/manage/rooms/update_subject/#{@room.id}", remote: true, class: "ui form" do %>
<% @subjects.each_slice(3) do |items| %>
<div class="fields three">
<% items.each do |subject| %>
<div class="field">
<div class="ui checkbox">
<input type="checkbox" class="hidden" name="room[subject_ids][]" value="<%= subject.id %>" <%= 'checked' if subject.include_room?(room) %>/>
<label><%= subject.title %></label>
</div>
</div>
<% end %>
</div>
<% end %>
<div class="field">
<%= submit_tag "approve", class: "ui button" %>
</div>
<% end %>
</div>
</div>
</div>
</div>
####### Parameters: {"utf8"=>"✓", "room"=>{"subject_ids"=>["44", "45", "48", "55", "56"]}, "commit"=>"approve", "id"=>"163"}
rooms_controller.rb中:
def update_subject
@room = Room.find(params[:id])
subjects = Subject.where(id: params[:room][:subject_ids])
@room.subjects = subjects
end
#####chontroller中的update用的是等号= 即@room.subjects = subjects(不用额外定义=号方法, 因为不需要一定的逻辑来限制赋值)