2011-02-24 113 views
0

有一个简单的代码:渲染错误的观点

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

问题是在respond_to里面的返回。 如果你做这样的工作原理(在这里)。

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