Лайоут анонимного контроллера

March 1, 2012

В продолжении темы про лайоуты. Допустим вы решили создать анонимный контроллер, который будет поддерживать классическую цепочку поиска подходящего лайоута согласно документации.

Например так:

# config/routes.rb
WeirdRailsApp::Application.routes.draw do
  controller = Class.new(ApplicationController) do
    def text
      render text: 'demo', layout: true
    end
  end

  root to: controller.action(:text)
end

Я не знаю зачем вам может понадобиться написать такой код, но никогда же нельзя за себя ручаться, мало ли что.

Вынужден огорчить, но в сегодняшних версиях рейлс вы получите ексепшн:

There was no default layout for #<Class:0xa1e6cd4> in #<ActionView::PathSet:...

Это происходит из-за ошибки в рейлс при поиске лайоута. К счастью я нашел этот дефект и исправил.

В рейлс 4.0 вы сможете пользоваться привычным наследованием лайоутов и для анонимных контроллеров тоже. Код, предложенный вверху поста, будет выполняться правильно.

comments powered by Disqus