如果用户更新帐户不成功,如何显示通知(设计宝石)?

时间:2012-09-26 08:06:07

标签: ruby-on-rails devise override

我覆盖了一个小设计宝石,允许用户根据情况更改有或没有帐户的一些细节。

我不想使用设计错误消息,因为我正在使用jQuery验证插件。

我想显示一些通知错误,当​​存在一些设计错误时,但我无法获得放置flash [:error]的位置。

以下是我的更新操作:

def update

self.resource = resource_class.to_adapter.get!(send(:"current_#{resource_name}").to_key)
# custom logic
if params[:user][:password].present?
  result = resource.update_with_password(params[resource_name])
else
  result = resource.update_without_password(params[resource_name])
end

# standart devise behaviour
if result
  if is_navigational_format?
    if resource.respond_to?(:pending_reconfirmation?) && resource.pending_reconfirmation?
      flash_key = :update_needs_confirmation
    end
    set_flash_message :notice, flash_key || :updated
  end
  sign_in resource_name, resource, :bypass => true
  respond_with resource, :location => after_update_path_for(resource)
 else
   if params[:user][:password].present?
    clean_up_passwords resource
    render "edit_user/edit_password"
    end
  end

那么,有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

如果您正在使用Jquery验证,您是否通过执行类似<%= form_for @user, :validate => true, do |f|%>

的操作在您的视图上启用了此功能

<强>更新 你可以做一些与此相似的事情

def update_password
    @user = current_user    
    @current_password = params[:user][:current_password]
    @password = params[:user][:password]

    if @user.valid_password?(@current_password)
      if @current_password == @password
        redirect_to user_path(@user)
        flash[:error] = "Current password cannot be the same as your new password."
      else
        if @user.update_attributes(params[:user])
          redirect_to login_path
          flash[:success] = "Password has been changed."
        else
          redirect_to user_path(@user)
          flash[:error] = "Didn't save contact an administrator."
        end
      end
    else
        redirect_to user_path(@user)
        flash[:error] = "Current password is incorrect."
    end
  end

假设你在我的视图中添加了我建议的顶部位并正确安装了Jquery验证,这应该可以正常工作