0

私の現在のRubyonRailsプロジェクトでは、deviseプラグインが認証に使用されています。パスワードを変更するために、deviseプラグインのpasswords/edit.html.erbファイルをプロジェクトのユーザーディレクトリに追加しました。エラーメッセージが表示されないことを除いて、すべてが正常に機能しています。

これが私の現在のupdate_password方法です

def update_password
    @user = User.find(current_user.id)
    if @user.update_with_password(params[:user])
      sign_in @user, :bypass => true
      redirect_to root_path
    else
      render "edit"  
    end
  end

ユーザーモデルでの検証が必要であると述べました。

validates_presence_of :name, :primary_locale, :current_password, :password, :password_confirmation

これは私の編集フォームコードです:

<div id="loginForm" class="editPwFormHeight">
    <div id="loginHeader"><h3><%= image_tag("wif_small.png"); %></h3></div>
    <div id="loginContent">
        <%= form_for(@user, :url => { :action => "update_password", :locale => params[:locale] }, :method => "post") do |f| %>
                <%= f.hidden_field :reset_password_token %>
            <p><%= f.password_field :current_password, :class => "login_txt", :placeholder => I18n.t('wi.common.enterCurrentPw'), :autocomplete => "off" %></p>
            <p><%= f.password_field :password, :class => "login_txt", :placeholder => I18n.t('wif.common.newPw'), :autocomplete => "off"  %></p>
            <p><%= f.password_field :password_confirmation, :class => "login_txt", :placeholder => I18n.t('wif.common.confirmPw'), :autocomplete => "off" %></p>
            <p>
                <input id="user_submit" name="commit" type="submit" value="<%= I18n.t('wif.common.updatePw') %>" class="login_btn" /> 
                <input id="user_cancel" name="commit" type="button" value="<%= I18n.t('wif.common.cancel') %>" class="login_btn" />
            </p>
        <% end %>
    </div>
</div>

誰でも私がこの問題を解決するのを手伝ってくれる。ユーザーが現在のパスワードを入力していない場合のエラーメッセージ、またはデバイスが現在サポートしているその他のエラーを表示したかった

4

1 に答える 1

1

テンプレートに次の行を追加する必要があります。

<%= devise_error_messages! %>

Deviseの翻訳ファイルを編集することで、メッセージ自体をカスタマイズできます。config/locales/devise.en.yml

deviseの組み込みコントローラーを使用していない場合はDeviseHelper、メソッドを使用してモジュールをコントローラーにヘルパーとして登録する必要がありますhelper

于 2012-08-29T11:12:44.933 に答える