渲染错误的观点

时间:2011-02-24 10:57:25

标签: ruby-on-rails model-view-controller view

有一个简单的代码:

def new
  if !logged_in?
    respond_to do |format|
      format.js {render "new_failed"}
      return
    end
  end

  article = Article.find params[:id]
  @comment = article.comments.build

  respond_to do |format|
    format.js
  end
end

当用户未登录时,应该呈现“new_failed”,但实际上,呈现“新”动作。

当我把logged_in?方法结束:

def new
  if !logged_in?
    respond_to do |format|
      format.js {render "new_failed"}
      return
    end
  end

  article = Article.find params[:id]
  @comment = article.comments.build

  respond_to do |format|
    format.html # new.html.erb
    format.js
  end
end

它正常工作。

这是多么奇怪的行为?谁能解释一下呢?

感谢。

1 个答案:

答案 0 :(得分:1)

问题是respond_to内的返回。 如果你这样做就可以了(这里)。

if !logged_in?
  respond_to do |format|
    format.js {render "new_failed"}
  end
  return
end