我覆盖了一个小设计宝石,允许用户根据情况更改有或没有帐户的一些细节。
我不想使用设计错误消息,因为我正在使用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
那么,有人可以帮我解决这个问题吗?
答案 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验证,这应该可以正常工作