如何使用rails上的按钮更新所有用户的数据?

时间:2018-05-24 14:28:28

标签: ruby-on-rails view model

我的索引视图包含一些代码:

所以我有我的用户模型。每个用户都有一个“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 %>

1 个答案:

答案 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