2012-06-25 2 views
0

У меня есть контроллер с помощью caches_actioncontent_for работает в разработке, но не в производстве?

controllers/bar_controller.rb:

caches_action :bar, :layout => false 

и в связи с этим действием, I'ill установка заголовка HTML в макете.

views/foo/bar.html.erb:

<%= content_for :mytitle do "testing" end %> 

это мой файл макета:

views/layouts/application.html.erb:

<title><%= yield :mytitle %></title> 

Однако это только работа в развитии. В производстве это не работает. Любая идея ценится. Благодарю.

подобный вопрос: Is there a workaround for ignored content_for blocks with caches_action and :layout => false?

+0

Кэширование, вероятно, находится в разработке. Когда он * делает кеш в производстве, вы говорите ему, чтобы игнорировать макет, а вместе с ним и то, что будет отображаться из 'content_for'. – numbers1311407

+0

является content_for игнорируется в кэшах? –

+1

Если вы даете content_for в макете и передаете ': layout => false', кажется, что так. Из [docs] (http://api.rubyonrails.org/classes/ActionController/Caching/Actions.html): «Если вы передадите: layout => false, он будет кэшировать только ваше содержимое действия. Это полезно, когда ваш макет имеет динамическую информацию ». – numbers1311407

ответ

0

Rails будет просто игнорировать content_for блок в кэширования включен среде. Используйте ActionController::Filters для вычисления значений и сохранения этих значений в переменных экземпляра. См. Переменные экземпляра в макетах.

Смежные вопросы