Как обновить данные для всех пользователей кнопкой на рельсах? - PullRequest
0 голосов
/ 24 мая 2018

У меня есть индексное представление с некоторым кодом:

Итак, у меня есть модель User.У каждого пользователя есть колонка «готово».Если его = 0, то я отображаю «Готово», = 1 «не готово», = 2 «Не подтверждено» Каждый пользователь может редактировать свое собственное состояние, а администраторы могут редактировать состояние всех пользователей по одному.

НоКак я могу отобразить кнопку (только для администратора с моим методом «current_user.admin?»), который устанавливает ячейку готовности на 2 (чтобы все пользователи были «неподтверждены») для всех пользователей?Мол, все в одно и то же время.Теперь мне нужно нажать один за другим, чтобы установить состояние готовности на 2, это не удобно.Вот мой взгляд эрб:

<% @user.each do |u| %>

<div class="<% if u.readyy == 2 %>unconfirmed <% end %> <% if u.readyy == 1 %>ready<% end %> <% if u.readyy == 0 %> not_ready<% end %>">

<%= u.name %>

<% if current_user %>
<% if current_user.id == u.id || current_user.admin? %>

<%= form_with(model: u) do |form| %>


<%= form.submit 'UPDATE STATE' %>

<% if current_user.admin? %>

<%= form.select :readyy, @readyyy # @readyyy = {  unconfirmed: 2, ready: 1, not_ready: 0 } %>

<% else %>

<%= form.select :readyy, @readyy #@readyy = {  ready: 1, not_ready: 0 } %>

<%end %>

<%end %>
<%end %>
<%end %>
<%end %>

1 Ответ

0 голосов
/ 24 мая 2018

Я бы посоветовал вам взглянуть на гем aasm для управления состоянием: https://github.com/aasm/aasm. Это должно работать:

разметка:

<%= button_to "Unconfirm users", unconfirm_all_users, method: :patch %>

маршруты:

resources :users do
  patch :unconfirm_all, on: :collection
end

контроллер:

class UsersController < ApplicationController
  def unconfirm_all
    User.update_all(ready: 2)
    redirect_to users_path
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...