Heroku的行为与开发机器不同

时间:2012-02-26 03:32:28

标签: ruby-on-rails layout heroku spree

我的控制器中有以下代码:

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

2 个答案:

答案 0 :(得分:0)

这通常是因为您没有将代码提交到heroku或heroku正在缓存旧版本的代码。

尝试更改控制器文件中的内容,然后提交,然后推送到heroku。它应该工作

答案 1 :(得分:0)

好找到了罪魁祸首:

 caches_action :show, :if => Proc.new { Spree::Config[:cache_static_content] }, :layout => false

这在开发和测试模式下关闭,但这在一定程度上超越了控制器的行为。我已经对此进行了评论,直到我有时间妥善解决这个问题。