Haml :: SyntaxError в Static # home? - PullRequest
2 голосов
/ 15 июня 2010

У меня есть этот Haml:

#index-header
  %h1 title
  %p motto
%h1 Our Software
  %p motto
.third-column
  %h2 Product 1
  %p foo
.third-column
  %h2 Product 2
  %p foo
.third-column
  %h2 Product 3
  %p foo

И я получаю эту ошибку:

Haml :: SyntaxError in Static # home

Отображение приложения / просмотров/static/home.html.haml, где поднялась строка # 5:

Illegal nesting: content can't be both given on the same line as %h1 and nested within it.

Что я делаю не так?Спасибо.

Ответы [ 4 ]

1 голос
/ 28 января 2011

Нельзя помещать содержимое в строку тега и одновременно добавлять вложенное содержимое. Правильный код:

#index-header
  %h1 Supersonic Mac Software.
  %p Some motto
%h1 
  Our Software
  %p Which will once becoume your's
1 голос
/ 15 июня 2010

Я думаю, что это жалуется, потому что у вас есть элемент <p> внутри тега <h1>. (Строка 4 в вашем коде.)

0 голосов
/ 30 апреля 2014

Если вы, как и я, искали решение, но нашли хор скептиков в хоре. Вы будете рады узнать, что HAML полностью способен и в равной степени готов выполнить это требование.

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

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

#index-header
  %h1 title
  %p motto
%h1
  Our Software
  %p motto
.third-column
  %h2 Product 1
  %p foo
.third-column
  %h2 Product 2
  %p foo
.third-column
  %h2 Product 3
  %p foo

Возможно, вы заметили, нам нужно было изменить только одно определение %h1, которое имеет вложенный тег %p, потому что это единственное определение, нарушающее синтаксический анализатор HAML.

Простым перемещением содержимого Our Software в строку с отступом рядом с его аналогами мы эффективно уменьшаем когнитивное трение, давая понять, что оба элемента являются родственными элементами одного и того же родителя.

Следующий фрагмент кода создаст разметку, необходимую для заголовка страницы в стиле bootstrap 3

.page-header
  %h1
    Example page header
    %small Subtext for header

NJoy!

0 голосов
/ 15 июня 2010

Жалуется, потому что у вас есть контент в той же строке, что и ваш тег %h1 (Our Software), и вложенный под ним (%p Which will once becoume your's), как и в сообщении об ошибке.

...