我的控制器中有以下代码:
class PagesController < Spree::BaseController
before_filter { render_404 if params[:id] =~ /(\.|\\)/ }
caches_action :show, :if => Proc.new { Spree::Config[:cache_static_content] }, :layout => false
respond_to :html
# GET /pages/about-us
def show
@page = Page.published.find_by_permalink(params[:id])
if @page.blank?
render_404
else
respond_to do |format|
#check if this is only a partial update
unless @page.is_subpage?
format.html # show.html.erb#
else
format.html {render :layout => false, :text => @page.body}
end
end
end
end
end
基本上,如果页面是一个sub_page,我不需要布局,只需要@ page.body中包含的html(一个ajax请求)。
这在开发中工作正常,但在heroku上似乎忽略了render :layout => false
我在heroku控制台上查了@page.is_subpage?它正如预期的那样工作,它排除了除非之外的任何问题。
还有另一种方法:layout =&gt;假?
我在heroku上最终得到的是一个带有div的整页(包括layouts / application.html.erb中的任何内容
编辑:
我正在使用的宝石here
答案 0 :(得分:0)
这通常是因为您没有将代码提交到heroku或heroku正在缓存旧版本的代码。
尝试更改控制器文件中的内容,然后提交,然后推送到heroku。它应该工作
答案 1 :(得分:0)
好找到了罪魁祸首:
caches_action :show, :if => Proc.new { Spree::Config[:cache_static_content] }, :layout => false
这在开发和测试模式下关闭,但这在一定程度上超越了控制器的行为。我已经对此进行了评论,直到我有时间妥善解决这个问题。