2012-07-10 16 views
0

我有一個用戶模型,名稱,電子郵件,密碼和生物。有多個編輯表單。需要修改更新方法和路由

我想要兩種編輯形式。一個用於編輯電子郵件,另一個用於密碼。

所以我的問題實際上是兩個部分。

A)如果update_attributes在更新方法失敗,如何呈現正確的頁面,而不是僅僅edit。這是我目前的更新方法。

def update 
    if @user.update_attributes(params[:user]) 
    flash[:success] = "Profile updated" 
    sign_in @user 
    redirect_to @user 
    else 
    render 'edit' 
    end 
end 

b)如何獲取change_password方法的路由如/users/1/edit?所以我想要類似/users/1/change_password


B)match '/users/:id/change_password', to: 'users#change_password'完成了這項工作。

+0

什麼是「正確的頁面」?你想要渲染什麼? – varatis 2012-07-10 03:47:56

+0

基於哪些參數正在更新,可以選擇「編輯」或「更改密碼」。 – 2012-07-10 03:49:33

回答

1

redirect_to edit_user_path(@user)

應該工作。

而且我會改變你的change_password路線是這樣的:

resource :users do 
    member do 
    put 'change_password' 
    end 
end 

這是做事情的多個軌道-Y方式。然後,你可以做

redirect_to change_password_user_path(@user)

+0

謝謝。如何更改update方法中的'if'語句來區分'redirect_to edit_user_path(@user)'和'redirect_to change_password_user_path(@user)'之間的情況? – 2012-07-10 04:05:16

+0

'change_password_user_path(@user)'導致了undefined_method錯誤。所以我嘗試了'change_password_users_path(@user)'。它產生了錯誤的路線。 'http:// localhost:3000/users/change_password.1' – 2012-07-10 04:27:40

+0

您還必須指定正確的CRUD操作。如果'change_password'只是用來渲染一個表單,你可以在上面指定的路由中將'put'改成'get'。 – varatis 2012-07-10 13:59:50

相關問題