簡體   English   中英

Rails設計插件自定義

[英]Rails devise plugin customization

在我當前的Ruby on Rails項目中,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>

任何人都可以幫助我解決這個問題。 如果用戶未鍵入當前密碼或設備當前支持的任何其他錯誤,我想顯示錯誤消息

您需要將以下行添加到模板中:

<%= devise_error_messages! %>

您可以通過編輯Devise的翻譯文件(例如config/locales/devise.en.yml定義消息。

如果您沒有使用DeviseHelper的內置控制器,則需要使用helper方法將DeviseHelper模塊注冊為控制器中的helper

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM