2015-08-15 48 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

對不起,我發佈了錯誤的控制器,但它是相同的東西,不同的標籤 –

相關問題