2014-01-06 2 views
0

У меня есть страница основного макета:Невозможно использовать флэш в целях

//layouts/main.scala.html 
@(title: String)(content: => Html)(implicit flash: Flash) 
<!DOCTYPE html> 
<html> 
    <!-- .... --> 
    <body> 
     <h2>Here is the flash:</h2> 
     @views.html.layouts._flash(flash) 
     <section class="content">My super content: @content</section> 
    </body> 
</html> 

//layouts/_flash.scala.html 
@(flash: Flash) 
@flash.data.foreach { case (k, v) => 
    key, value: (@k, @v) 
} 

и контроллер:

//controllers/Application.scala 
    def index = Action { implicit request => 
    Ok(views.html.application.index()) 
    } 

и вид на него:

//application/index.scala.html 
@layouts.main("Index") { 
    <h1>Index page</h1> 
} 

Вид index.scala.html выдает ошибку:

could not find implicit value for parameter flash: play.api.mvc.Flash 

Я попытался это:

//application/index.scala.html 
@(implicit flash: Flash) 
@layouts.main("Index") { 
    <h1>Index page</h1> 
} 

И это вызвало еще одну ошибку:

not enough arguments for method apply: (implicit flash: play.api.mvc.Flash)play.api.templates.HtmlFormat.Appendable in object index. Unspecified value parameter flash. 
+0

Вам нужно ** указать ** неявное определение объекта 'Flash' где-нибудь - вы указали в своем шаблоне, что хотите, теперь вам нужно написать метод в области (например, в вашем контроллере), который возвращает 'Flash' – millhouse

ответ

2

Попробуйте изменить ваш взгляд на это:

@()(implicit flash: Flash) 
@layouts.main("Index") { 
    <h1>Index page</h1> 
} 

или изменить контроллер для этого:

def index = Action { implicit request => 
    Ok(views.html.application.index(request.flash)) 
} 
Смежные вопросы