我似乎无法处理错误消息。这是我的方法:
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出于某种原因开始在authorizations目录中查找users / show中的partials,大概是因为我从用户视图调用了授权控制器。
以下是我在观看中显示flash的方法:
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
我可以通知看起来很好。
答案 0 :(得分:0)
所以,这似乎有效:
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