0

上記のタイトルは私の課題です。ユーザーが現在のパスワードを入力すると、パスワードが一致しないというエラーが表示されます。比較する現在のパスワードを取得する方法 私のviews/users/_form.html.erbのコードは次のとおりです

     <fieldset>
      <legend>Enter User Details</legend>
      <div>
      <%= f.label :name %>:
        <%= f.text_field :name, :size => 40 %>
        </div>
          <% if params[:action ]== "edit" || params[:action]== "update" %>
    <div>
         <%= f.label :current_password, :class => "long_label" %><br />:
        <%= f.password_field :current_password, :size => 40 %>
         </div>
    <% end %>
   <div>
     <%= f.label :password, 'Password' %>:
   <%= f.password_field :password, :size => 40 %>
   </div>
    <div>
    <%= f.label :password_confirmation, 'Confirm' %>:
    <%= f.password_field :password_confirmation, :size => 40 %>
   </div>
    <div>
     <%= f.submit %>
       </div>
     </fieldset>

そして、私の更新コントローラーのコードは

        def update
        @user = User.find(params[:id])
      if @user.authenticate(params[:user][:current_password])
       cp = params[:user].delete('current_password')
    @user.errors.add(:current_password, 'is not correct') unless @user.authenticate(cp)
respond_to do |format|
if @user.errors.empty? and @user.update_attributes(params[:user])

    format.html { redirect_to user_url, :notice => 'Successfully updated.' }
    format.json { head :no_content }
  else
    format.html { render :action => "edit" }
    format.json { render :json => @user.errors, :status => :unprocessable_entity }
  end
end
end

私のユーザーモデルのコードは次のとおりです

       class User < ActiveRecord::Base
            attr_accessible :name, :password_digest, :password, :password_confirmation,    :current_password
       # attr_accessor :password validates :name, :presence => true, :uniqueness => true

          #validates :current_password, :presence => true
          validates :password, :presence =>true
          validates_confirmation_of :password, :presence => true
           has_secure_password 
      after_destroy :ensure_an_admin_remains
      private
     def ensure_an_admin_remains
      if User.count.zero?
         raise "Can't delete last user"
     end
       end

    end

これは正しい方法ですか?以前のパスワードで確認する条件の書き方は?エラーのテンプレートを求めています。私の知る限り、エラーにはテンプレートは必要ありません..しかし、ここでは質問しています。どんな助けでも大歓迎です!!

4

1 に答える 1

0
<%= f.password_field :currnet_password, :size => 40 %>

打ち間違え?:current_password代わりに試してください:currnet_password

于 2013-03-29T15:40:46.237 に答える