在rails中显示错误消息

时间:2011-05-30 20:01:37

标签: ruby-on-rails-3

我似乎无法处理错误消息。这是我的方法:

  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

我可以通知看起来很好。

1 个答案:

答案 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