2011-02-24 119 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