我的索引视图包含一些代码:
所以我有我的用户模型。每个用户都有一个“readyy”列。 如果它= 0,那么我显示“Ready”,= 1“not ready”,= 2“Unconfirmed” 每个用户都可以编辑自己的状态,管理员可以逐个编辑所有用户状态。
但是,如何为所有用户显示一个按钮(仅限管理员使用我的“current_user.admin?”方法),将就绪单元格设置为2(为所有用户设置“未确认”)?就像,在同一时间。 现在我必须逐个点击将readyy状态设置为2,这不方便。 这是我的观点erb:
<% @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 %>
答案 0 :(得分:1)
我建议您查看状态管理的aasm gem: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