在轨道中显示错误消息



我似乎在处理错误消息时遇到了问题。这是我的方法:

  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开始在authorization目录内的users/show中查找部分,可能是因为我从users视图调用authorization控制器。

以下是我如何在视图中显示闪光灯:

 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

相关内容

  • 没有找到相关文章

最新更新