2011-05-19 194 views
0

我想在rails中實現一個被遺忘的密碼解決方案。我有一個表格供用戶輸入他們註冊帳戶的電子郵件地址,我打算讓郵件程序給他們發送一封唯一的URL,將他們鏈接到密碼重置頁面。在軌道忘記密碼

的config/routes.rb中文件有以下途徑:

resources :users do 
    collection do 
    get :lost_password #the account-email submisison form url 
    get :reset_password #a url for the function that sends the response email 
    end 
end 

當我從控制檯運行耙路線,我得到的路徑我想:

lost_password_users GET /users/lost_password(.:format) {:action=>"lost_password", :controller=>"users"} 
reset_password_users GET /users/reset_password(.:format) {:action=>"reset_password", :controller=>"users"} 
users    GET /users(.:format)    {:action=>"index", :controller=>"users"} 
        POST /users(.:format)    {:action=>"create", :controller=>"users"} 

但!當用戶點擊了提交在下面的代碼中列出的表格按鈕:

<h3>Reset Password</h3> 
<%= form_for(:user, :url => reset_password_users_path) do |f| %> 
    <p>Enter the email address you used to register for this site.</p></br> 
    <div class="field"> 
    <%= f.label :email %> </br> 
    <%= f.text_field :email %> 
    </div> 
    <div class="actions"> 
    <%= f.submit "Send Email" %> 
    </div> 
<% end %> 

我得到一個

沒有路由匹配 「/用戶/ reset_password」

通過錯誤ActionController。

我呢,其實,有意見,並同時爲lost_password_users_pathreset_password_users_path定義控制器的功能,所以我很困惑,爲什麼我會遇到這樣的路由錯誤。

我有兩個問題:

  1. 爲什麼會ActionController的提出這個錯誤,當我有明確的路徑,方法和觀點界定?
  2. 是否有其他人在RoR中實現了密碼重置,並且您能否借鑑任何有關這種方法是否良好的方法?

在此先感謝!

回答

1

嘗試在routes.rb中

+0

由於改變get :reset_passwordpost :reset_password,普拉!仍在努力理解這一切如何聯繫在一起的不斷增長的痛苦。 = P – ArcGhost 2011-05-19 11:05:12