Может ли HAML в Ruby on Rails выводить атрибуты HTML "упорядоченным хешем"? - PullRequest
3 голосов
/ 10 мая 2011

Например, если используется haml:

%html{'xmlns' => "http://www.w3.org/1999/xhtml",
      'xmlns:og' => "http://ogp.me/ns#",
      'xmlns:fb' => "http://www.facebook.com/2008/fbml"}

, то вывод:

<html xmlns:fb='http://www.facebook.com/2008/fbml' xmlns:og='http://ogp.me/ns#' xmlns='http://www.w3.org/1999/xhtml'> 

, что в другом порядке.Есть ли способ сделать это в указанном порядке?

(используется Ruby 1.9.2 и Rails 3.0.6)

Обновление 1: хотяв HTML порядок атрибутов не имеет значения, но в некоторых случаях я просто хочу следовать указаниям спецификации.Кто знает, что делает их синтаксический анализатор и использует ли он какое-то регулярное выражение для выполнения действий, которым будут соответствовать люди, следующие спецификации, но не соответствующие спецификации, не будут совпадать из-за «ошибки», которую они используют для анализа при помощи регулярного выражения.

Обновление 2: Или, что если в общем случае для чего-то еще?Это не должны быть атрибуты HTML.Это может быть что угодно, какой порядок важен.

Ответы [ 2 ]

4 голосов
/ 10 мая 2011

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

Если вы действительно хотите сохранить порядок, вы можете использовать альтернативныйСинтаксис HAML:

%html(xmlns="http://www.w3.org/1999/xhtml"
  xmlns:og="http://ogp.me/ns#"
  xmlns:fb="http://www.facebook.com/2008/fbml")

Редактировать: альтернативный синтаксис дает тот же результат.goto "arguments_are_orderless"

2 голосов
/ 10 мая 2011

Вы можете, если вы сами генерируете фактическую строку HTML из вспомогательной функции.

def html_with_ns
  '<html xmlns="...">'
end

, а затем

=html_with_ns

в шаблоне.Не очень привлекательно, но, возможно, это цена совершенства в этом случае.

Можно утверждать, что в этом нет необходимости, поскольку хэши на самом деле заказаны в Ruby 1.9 (см. Комментарии ниже, я не знал, чтодело).Возможно, исправление для Haml, чтобы он не сортировал хэши при запуске под 1.9, могло бы быть в порядке ...

...