模板,我有一個包裝的模板,看起來像這樣:如何在Play之間洗牌!在斯卡拉
@(first: Html, second:Html, third:Html)
<div class="wrapper">
@first
@second
@third
</div>
我有三個模板,我想重新洗牌,並將作爲第一,第二和第三。我們將它們命名爲:views.html.a,views.html.b,views.html.c。
控制器代碼:
val a = views.html.a
val b = views.html.b
val c = views.html.c
val list = Random.shuffle(List(a, b, c)) // Will use Random.shuffle here but it fails complication either way
Ok(views.html.wrapper(list(0)(), list(1)(), list(2)()))
併發症發生錯誤:
play.templates.BaseScalaTemplate[play.api.templates.HtmlFormat.Appendable,play.templates.Format[play.api.templates.HtmlFormat.Appendable]] does not take parameters
它顯示爲輸入對象的列表,並得到它的技巧編譯器。
如果我不使用列表,這樣做:
Ok(views.html.wrapper(a(), b(), c()))
它工作正常,並呈現頁面。
我知道我可以將隨機邏輯移動到包裝模板,但我更願意理解/修復當前的實現並學習一些Scala。
感謝
編輯
閱讀serejja的回答後,我會增加複雜性的問題,因爲這更好地代表我所面臨的問題。 三個模板需要採取一個布爾所以views.html.a樣子:
@(checkMe:Boolean)
<div ...
所以我不能在洗牌前使用括號。只有在洗牌發生之後,我才希望發出布爾人的真假。
使用這種方法:
Ok(views.html.wrapper(list(0)(true), list(1)(false), list(2)(true)))
提供了以下編譯錯誤:
play.templates.BaseScalaTemplate[play.api.templates.Html,play.templates.Format[play.api.templates.Html]] with play.api.templates.Template1[Boolean,play.api.templates.Html] does not take parameters
你的意思是你必須調用模板像Ok(views.html.wrapper(list(0)(true),list(1)(false),list(2)(true)))''? – serejja
是的,問題被編輯 –
請參閱我的編輯以及 – serejja