2011-07-15 2 views
2

Я не уверен, что это такое. Я только что повышен до Rails 3.1 из 3.0.9 и вот что я получаю в моей спецификации:Rails 3.1 response_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 частичный, который получает включен на каждую страницу, которая в основном означает, что расположение приложения визуализируется здесь вместо этого.)

Update: Я заменил render_403 в #edit с render(:file => "#{Rails.root}/public/403.html", :status => 403, :layout => false), чтобы увидеть, что происходит - получил тот же результат.

ответ

2

Хорошо, понял. Возможно, это не проблема с Rails. По крайней мере проблема возникает только при запуске спецификаций.

Я проверял, если 403 страницы отображаются с этим:

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

Не работает не больше. Замена его на

response.status.should == 403 

исправлена ​​проблема.