Изменить статус в зависимости от значения флажка - PullRequest
0 голосов
/ 27 июня 2018

У меня есть несколько флажков (для статуса записи) на странице, мне нужно обновлять статус записей при нажатии кнопки

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

Я обновляю статус, но я хочу сделать это с лучшей опцией, это нормально, чтобы отправить все статусы флажков, или это будет хорошо для отправки только измененных флажков, я в замешательстве, чтобы выбрать лучший вариант, Любое предложение

1 Ответ

0 голосов
/ 27 июня 2018

Без дополнительной информации о ваших схемах / моделях решение выглядит нормально. Я бы просто переместил логику в модель:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...