Доступ к флеш-карте из шаблона Jade в Scalatra

Я создаю приложение, используя Scalatra, и я использую Scalate/Jade для шаблонов. Я пытаюсь добавить поддержку flash в свое приложение. Я смешал FlashMapSupport в мой сервлет, и я могу получить доступ flash помощник. В любом случае, если я пытаюсь получить его из макета, я получаю следующую ошибку:

[error] /home/ytaras/projects/scala/scalatra-shopping-cart/target/scala-2.10/src_managed/main/scalate/templates/layouts/default_jade.scala:27: not found: value flash
[error]                         flash.get("alert").foreach
[error]                         ^
[error] one error found

Лучшее, что я мог сделать, чтобы избежать этого, это использовать downcast для рендеринга контекста:

  - context.asInstanceOf[org.scalatra.scalate.ScalatraRenderContext].flash.get("alert").foreach
    - alert =>
    .alert
      .button(type="button" class="close" data-dismiss="alert") ×
      = alert

Во всяком случае, это определенно не самое красивое решение. Что-то я могу сделать, чтобы это исправить, или это проблема в Scalate/Jade-коде?

1 ответ

Решение

Я только что сделал очень простое приложение Scalatra с использованием Jade, похоже, оно работает в соответствии с документами.

Изменить: я работал с приложением, созданным в более ранней версии Scalatra.

В Scalatra 2.2.0 мы добавили предварительно скомпилированные шаблоны Scalate в скелет g8, чтобы обеспечить дополнительную скорость производства по умолчанию. Там ошибка в project/build.scala там, что приводит к потере флэш-контекста.

Добавьте это к вашему project/build.scala: https://gist.github.com/anonymous/ff40cdde1a1105970f50

Мы исправим шаблон g8 на мгновение. Извините за беспокойство.

Другие вопросы по тегам