gpt4 book ai didi

rendering - Rails 3.1 respond_to 和 render_403 问题

转载 作者:行者123 更新时间:2023-12-02 07:34:24 28 4
gpt4 key购买 nike

我不确定它是什么。我刚刚从 3.0.9 升级到 Rails 3.1,以下是我的规范:

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">

这超出了我在各种 Controller 中的规范。我的 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 block 会被执行(检查过)。然而,规范预期落空。想知道这里发生了什么。

(search/_search_menu_item 是包含在每个页面上的部分内容,这基本上意味着应用程序布局将在此处呈现。)

更新:我已将 #edit 中的 render_403 替换为 render(:file => "#{Rails.root }/public/403.html", :status => 403, :layout => false) 看看会发生什么 - 得到相同的结果。

最佳答案

好的,明白了。可能不是 Rails 问题。至少只有在运行规范时才会出现问题。

我一直在检查 403 页面是否是这样渲染的:

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

不再起作用了。替换为

response.status.should == 403

解决了问题。

关于rendering - Rails 3.1 respond_to 和 render_403 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6703460/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com