有一个简单的代码:
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
它正常工作。
这是多么奇怪的行为?谁能解释一下呢?
感谢。
答案 0 :(得分:1)
问题是respond_to内的返回。 如果你这样做就可以了(这里)。
if !logged_in?
respond_to do |format|
format.js {render "new_failed"}
end
return
end