2011-03-03 19 views

回答

1

Rails的辦法是有一個資源 - 每個方法都應該有責任。

resources :password_resets 

然後你就會讓用戶通過訪問形式重設密碼:

link_to 'Lost your Password?', new_password_reset_path 

然後形式將發佈創建一個新的password_reset ...這將發送一封電子郵件,顯示密碼重設的鏈接。

form_tag(password_resets_path, :method=>:post) do 

當用戶輸入他們更新的密碼時,它將更新密碼重設。

0

對它們進行不同的命名,並在config/routes.rb中創建兩條路線。如果你真的真的想要一個動作做不同的事情,這是不是一個好主意,檢查request.methodrequest.get?request.post?

1
# in routes.rb 
resources :password_resets 

# in app/controllers/password_resets.rb 
class PasswordResets < ApplicationController 

    def new 
    @user = current_user 
    # render new reset form 
    end 

    def create 
    @user = current_user 
    @new_password = User.generate_random_password 
    if @user.update_attributes(:password => @new_password) 
     UserMailer.password_reset(@new_password).deliver 
     flash[:notice] = 'Successfully reset your password, check your email!' 
    else 
     flash[:error] = 'Could not reset password' 
    end 
    redirect_to login_path 
    end 

end 
0

,你可以在你的控制器

#get only 
def get_forgot_password 
end 

#post only 
def post_forgot_passord 
end 

重命名操作,然後在你的routes.rb

match '/forgot_password' => 'pass_reset#get_forgot_password', :via => 'get' 
match '/forgot_password' => 'pass_reset#post_forgot_password', :via => 'post' 

的:通過選項做的伎倆。

相關問題