Я сейчас разрабатываю драгоценный камень, который обрабатывает мобильные устройства.
Контроллер выглядит так:
class PageController < ApplicationController
has_mobile_views
И код драгоценного камня выглядит так:
module MobileViewsController
module ClassMethods
def has_mobile_views(args={})
class_eval do
if request.subdomain == 'm'
request.format = :mobile_html
layout Proc.new { |controller| controller.request.subdomain == 'm' ? 'mobile_application' : 'application'}
end
end
end
end
Формат работает просто отлично, он хорошо отображает файлы xxx.mobile_html.haml, но не работает загрузка макета.Он не загружает никакой компоновки.
Но с другой стороны, когда я изменяю
controller.request.subdomain == 'm' ? 'mobile_application' : 'application'
на
controller.request.subdomain == 'm' ? 'xmobile_application' : 'application'
Выдает ошибку, что xmobile_application не может бытьнайден, поэтому он должен хотя бы найти его.
Это также не работает:
class PageController < ApplicationController
has_mobile_views
layout 'mobile_application'
Однако, когда я изменяю PageController на
class PageController < ApplicationController
layout 'mobile_application'
Макетзагружается и отображается правильно.
У кого-нибудь есть идея, что здесь может быть не так или что нужно изменить в геме, чтобы не испортить макет?