2015-08-15 51 views
0

我试图通过单击“更新用户”按钮将用户的“状态”从“admin”更改为“用户”来更新用户的长列表中的用户状态”。但是,我使用的代码只会将第一个用户从'admin'更新为'user',无论我按哪个按钮。如何从索引列表中更新记录rails

我相信错误是在控制器中,在第一行更新。

如何使更新功能选择我单击“使用户”的记录并更新该记录,而不是第一条记录?谢谢!

控制器

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

您需要检查@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 %>

+0

我如何才能让表格功能仅是记录在案?因为它仍然只编辑数据库中的第一条记录 –

+0

请分享您的表单代码。 –

+0

对不起,我发布了错误的控制器,但它是相同的东西,不同的标签 –

相关问题