Ruby on rails 仅在使用rails的特定HAML页面上包含命名空间声明

Ruby on rails 仅在使用rails的特定HAML页面上包含命名空间声明,ruby-on-rails,namespaces,haml,Ruby On Rails,Namespaces,Haml,我有一个使用HAML(v3.0.25)的Rails应用程序(v2.3.8)。My application.html.haml当前在顶部声明了以下facebook名称空间,专门用于子页面中的FBLike: !!! 5 %html{:lang => 'en', 'xmlns:og' => 'http://ogp.me/ns#', 'xmlns:fb' => 'http://www.facebook.com/2008/fbml' } %head ... 是否可以从app

我有一个使用HAML(v3.0.25)的Rails应用程序(v2.3.8)。My application.html.haml当前在顶部声明了以下facebook名称空间,专门用于子页面中的FBLike:

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

是否可以从application.html.haml中删除facebook声明&仅在my childpage.html.haml中声明,FBLike和meta标记在哪里?我还想保持:lang=>'en'现在的位置;我不想在所有页面中再次声明它。

您始终可以为具有此命名空间标头的FBML页面创建不同的布局。还可以创建一个名为
html\u tag\u 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
您可以自定义它,使其具有所需的行为,而不是简单的实例变量测试