如何使用 Rails 上的按钮更新所有用户的数据?
Posted
技术标签:
【中文标题】如何使用 Rails 上的按钮更新所有用户的数据?【英文标题】:How to update data for all users with a button on rails? 【发布时间】:2018-05-24 14:28:28 【问题描述】:我有一些代码的索引视图:
所以我有我的用户模型。每个用户都有一个“准备就绪”列。 如果它 = 0,那么我显示“Ready”,=1“not ready”,=2“Unconfirmed” 每个用户都可以编辑自己的状态,管理员可以对所有用户的状态一一编辑。
但是如何显示一个按钮(仅适用于使用我的“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】:我建议您查看用于状态管理的 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
【讨论】:
你好,谢谢你的回答,我试过了,但是当我访问视图时它返回一个错误:'显示/home/otho/code/othocore/othocore/app/views/users/index .html.erb where line #3 raise: undefined local variable or method `unconfirm_all_users' for #:0x007fec01cf2f70> 你的意思是? unconfirm_all_users_url unconfirm_all_users_path' 添加 _path 到 unconfirm_all_users 并工作!谢谢你!!以上是关于如何使用 Rails 上的按钮更新所有用户的数据?的主要内容,如果未能解决你的问题,请参考以下文章
Rails omniauth Google - 如何更新个人资料数据
rails,simple_form,保存后如何使用所选选项更新单选按钮?