2012-01-12 22 views
3

私はhas_secure_passwordメソッドを使用していますが、パスワードフォームとコントローラのアクションを変更する方法はありますか? は、私は次のようにそれは見なければならないと思う:私はまだ標準化の方法によって、この「正しい」を行う方法がわからないんだけどパスワード変更フォームの作成方法は?

<%= form_for @parent, :url => update_password_path(@parent) do |f| %> 
<%= f.label :old_password %><br /> 
<%= f.text_field :old_password %><br /> 
<%= f.label :new_password %><br /> 
<%= f.text_field :password %><br /> 
<%= f.label :password_confirmation %><br /> 
<%= f.text_field :password_confirmation %><br /> 
<%= f.submit %> 
<% end %> 

答えて

0

、しかし、ええ、あなたはそのような形をしたいと思います。古いパスワードがときに新しいユーザーの登録、それらを濾過しているだけのように、あなたがパスワードをフィルタリングしていることを確認してください

user = User.find(session[:user_id]) if session[:user_id] 
if user and user.authenticate(params[:old_password]) 
    if params[:password] == params[:password_confirmation] 
     user.password_confirmation = BCrypt::Password.create(params[:password]) 
     respond_to do |format| 
      format.html # reset_password_success.html.erb 
     end 
    else 
     redirect_to reset_password_url, notice: "Incorrect Password." 
    end 
else 
    redirect_to reset_password_url, notice: "Incorrect Password." 
end 

を行うことで有効である場合、コントローラのアクションをチェックします。

フォームが機能するかどうかわかりません。私は、フォームを正しい方法で作成する方法や、急いでいる場合、通常の古いHTMLを使用して一緒にハックしたり、松葉杖として使用することができます。あなたの時間的制約と過去の経験に基づいてこれを決定してください。

フォームが正常に動作しているが、リクエストを処理する際にエラーが発生した場合は、params [:old_password]などを使用して実際にアクセスしてください。 params [:user] [:old_password]のように別のparamsオブジェクトの中にネストされているかもしれません。あなたは、あなたのレールコンソールを見たり、ログを見たりして、パラメータの送信方法を知ることができます。これはHerokuの上でホストされている場合、あなたはそれがログのだためHerokuのを依頼する必要があります=>https://devcenter.heroku.com/articles/logging そして、あなたも

交通ネットワークに聞いて(バイオリン=>http://www.fiddler2.com/fiddler2/を主要なブラウザ上でのdevのツールをまたは使用)でそれを把握することができますこのコードは、あなたがAgile Web Development with Rails(第4版)の本を読んでいると仮定しています。そうでない場合、いくつかの調整が行われなければならない。

関連する問題