我正在尝试通过点击“生成用户”按钮从一长串用户更新用户的状态,该按钮会将用户的“状态”从“管理员”更新为“用户”。但是,我使用的代码只会将第一个用户从“admin”更新为“user”,无论我按哪个按钮。
我认为错误发生在第一行更新中的控制器中。
如何让更新功能选择我点击“make user”并更新的记录,而不是列出的第一条记录?谢谢!
控制器
def index
@user = User.find(params[:id])
end
def update
@user = User.find_by(params[:id])
@user.update_attributes(update_user_params)
redirect_to '/dashboard/users'
end
问题必须在(params [:id])中。 表格代码
<% @user.each do |user| %>
<tr id="dashfield">
<td><%= user.first_name%></td>
<td><%= user.last_name %></td>
<td><%= user.email %></td>
<td><%= user.role %></td>
<td><%= form_for user, method: :put do |f|%>
<%= f.hidden_field :role, :value => 'user'%>
<%= f.submit 'Make User'%>
<%end%><%= form_for user, method: :put do |f|%>
<%= f.hidden_field :role, :value => 'admin'%>
<%= f.submit 'Make Admin'%>
<%end%></td>
</tr>
<% end %>
答案 0 :(得分:0)
您需要检查@hour是否存在,然后您可以更新
def update
@user = User.find_by(params[:id]) if params[:id].present?
if @hour.present?
@user.update_attributes(update_user_params)
redirect_to '/dashboard/users'
end
end
您必须先检查所有可能的故障。
修改强>
您可以设置用户ID,如:<%= f.hidden_field :id, :value => user.id %>