问题描述
|
我似乎在处理错误消息时遇到麻烦。这是我的方法:
def destroy
@user = User.find(current_user)
@authorization = Authorization.find(params[:id])
if @user.authorizations.count > 1
@authorization.destroy
redirect_to(user_path(current_user))
else
...
end
end
我不希望用户删除其最后的授权(例如Facebook),因为那样用户将没有与此相关的任何授权,并且该帐户将丢失。我想发送一条错误消息,说明为什么destroy方法失败,但是我不确定如何。我尝试过的所有方法均无效。
我已经尝试过类似@ user.errors.add => \“错误消息\”的操作
但这只是空白。我认为我的问题是使用渲染。例如,如果我尝试:
respond_to do |format|
@user.errors[:base] << \"Sorry,you can\'t delete your only authorized service.\"
format.html render :template => \"users/show\"
end
我遇到一个问题,因为出于某种原因,Rails开始在授权目录内的users / show中查找部分内容,大概是因为我是从用户视图中调用授权控制器。
这是我在视图中显示闪光灯的方式:
def show_flash
[:notice,:errors,:alert].collect do |key|
msg = (flash[key].to_s + \" (close)\")
content_tag(:div,(content_tag(:a,msg,:class => \"#{key}\",:href => \"#\",:onclick => \"$(\'messages\').slideUp(); return false;\")),:id => key,:class => \"flash_#{key}\") unless flash[key].blank?
end.join
end
我可以得到通知,看起来很好。
解决方法
因此,这似乎正在工作:
respond_to do |format|
format.html {redirect_to(@user,:alert => \"Sorry,you can\'t delete your only authorized service.\")}
end
但是,这不是:
respond_to do |format|
format.html {redirect_to(@user,:errors => \"Sorry,you can\'t delete your only authorized service.\")}
end