Heroku ведет себя иначе, чем машина для разработки - PullRequest
0 голосов
/ 26 февраля 2012

В моем контроллере есть следующий код:

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, мне не нужно макетировать, только HTML, содержащийся в @ page.body (запрос ajax).

Это отлично работает в разработке, но на героку похоже игнорирует render :layout => false

Я проверял на консоли heroku, что @ page.is_subpage?работает как положено, что и делает, что исключает любые проблемы, связанные с исключением.

Есть ли другой способ сделать: layout => false?

Что я на самом деле получаю на heroku, это полная страница с div (включая все, что находится в макетах / приложении).html.erb

РЕДАКТИРОВАТЬ:

Камень, который я использую, можно найти здесь

Ответы [ 2 ]

0 голосов
/ 26 февраля 2012

ОК. Обнаружил виновника:

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

Это отключено в режиме разработки и тестирования, но это каким-то образом нарушает поведение контроллера.Я прокомментировал это, пока у меня нет времени, чтобы исправить это должным образом.

0 голосов
/ 26 февраля 2012

Обычно это происходит из-за того, что вы не передали код в heroku, или heroku кэширует вашу старую версию кода.

Попробуйте изменить что-то в файле контроллера, затем зафиксируйте его, затем нажмите на heroku.Должно работать

...