Включать объявления пространства имен только на определенных страницах HAML с использованием rails - PullRequest
2 голосов
/ 02 февраля 2011

У меня есть приложение Rails (v2.3.8), использующее HAML (v3.0.25).Мой application.html.haml в настоящее время имеет следующие пространства имен facebook, объявленные вверху, специально для FBLike на дочерней странице:

!!! 5
%html{:lang => 'en', 'xmlns:og' => 'http://ogp.me/ns#', 'xmlns:fb' => 'http://www.facebook.com/2008/fbml' }
  %head
    ...

Возможно ли удалить объявление facebook из application.html.haml &только объявите это в моем childpage.html.haml, где находятся мета-теги FBLike &?Я также хотел бы сохранить: lang => 'en', где он находится в данный момент;Я не хочу объявлять это снова на всех страницах.

1 Ответ

1 голос
/ 02 февраля 2011

Вы всегда можете создать другой макет для страниц FBML с таким заголовком пространства имен. Также возможно создать помощника вида с именем типа html_tag_attributes и использовать его вместо:

%html{ html_tag_attributes }

Вы бы определили это примерно:

DEFAULT_HTML_ATTRIBUTES = { :lang => 'en', 'xmlns:og' => 'http://ogp.me/ns#' }
DEFAULT_FBML_ATTRIBUTES = DEFAULT_HTML_ATTRIBUTES.merge('xmlns:fb' => 'http://www.facebook.com/2008/fbml')

def html_tag_attributes
  @use_fbml ? DEFAULT_FBML_ATTRIBUTES : DEFAULT_HTML_ATTRIBUTES
end

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

...