我在页面中有多个复选框(用于记录状态),我需要在单击按钮时更新记录的状态
<% collection.each do |staff| %>
<div class="col-sm-6 col-md-4 col-lg-3" id="staff-<%= role.id %>">
<input class="filled-in chk-col-indigo" type="checkbox" id="staffStatus-
<%=staff.id %>">
<label class="labelValue" for="staffStatus-<%= staff.id %>">
<% end%>
点击“提交”按钮后,我仅根据选中状态选中所有复选框,
$(document).on 'click', '#StatusUpdateButton', ->
inactive = []
active = []
$.each $(".staff__active:not(:checked)"), ->
inactive.push($(this).val())
$.each $(".staff__active:checked"), ->
active.push($(this).val())
在控制器中
def update_role_status
Staff.where('id IN (?)', params[:active]).update_all(active: true)
Staff.where('id IN (?)', params[:inactive]).update_all(active: false)
end
我正在更新状态,但是我想用更好的选择来做到这一点,可以发送所有复选框状态还是可以只发送更改后的复选框,这是件好事,我很困惑采取更好的选择,任何建议
答案 0 :(得分:0)
如果没有有关您的架构/模型的更多信息,该解决方案看起来还可以。我只是将逻辑移至模型:
class Staff
# ...
def self.activate_all(ids)
where(id: ids).update_all(active: true)
end
def self.deactivate_all(ids)
where(id: ids).update_all(active: true)
end
end
# controller
Staff.activate_all(params[:active])
Staff.deactivate_all(params[: inactive])
另一种选择是使用嵌套形式:https://coderwall.com/p/qwx3qa/nested-form-and-rails-4