2011-07-15 91 views
2

我不確定它是什麼。我剛剛升級到Rails 3.0.9從3.1和這裏就是我在我的規格得到:Rails 3.1 respond_to&render_403問題

PeopleController edit action should require owner 
Failure/Error: response.should render_template("/public/403.html") 
expecting <"/public/403.html"> but rendering with <"search/_search_menu_item"> 

這是所有在我的各種控制器規格。我也有這個代碼在我的AppController:

def render_403 
    respond_to do |format| 
    format.html { render :file => "#{Rails.root}/public/403.html", :status => 403, :layout => false } 
    format.json { render :json => { :error => true, :message => "Error 403, you don't have permissions for this operation." } } 
    end 
end 

而這把PeopleController:

def edit 
    render_403 unless @person.account.id == current_account.id 
end 

我敢肯定,format.html塊被執行(選中它)。然而,規範期望失敗。不知道這裏發生了什麼。

search/_search_menu_item是被包含在每一個頁面,這基本上意味着應用程序佈局得到,而不是在這裏呈現的部分。)

更新:我在#editrender(:file => "#{Rails.root}/public/403.html", :status => 403, :layout => false)更換render_403看個究竟 - 得到了同樣的結果。

回答

2

好吧,算出來。可能不是Rails問題。至少只有在運行規格時纔會出現問題。

response.should render_template("public/403.html") 

不工作沒有更多:

如果403個頁面渲染這個我已經檢查。用

代替
response.status.should == 403 

修復了這個問題。