Playframework的新功能。我在这里做错了什么?
非常感谢任何帮助。 THX
嗯,为什么投票失败?如果有一些我缺少的东西,你可以发表评论,以便我可以编辑它。只是想找到答案&在我得到答案之前,我的问题已经关闭了。这是我的代码:
package model
case class Foo(id: Option[FooId],
name: String) extends WithId[FooId]
object Foos extends IdTable[FooId, FOO]("FOOS") {
def bars = Vector(Query(Bars).filter(_.fooId === id)) // Here is where "bars" is defined
}
这是我的观点:
@(foo: model.Foo)
@foo.name
<ul>
@foo.bars { b =>
<li>
@b.id
</li>
}
</ul>
这是错误:
value bars is not a member of model.Foo
答案 0 :(得分:2)
错误消息非常正确。 Foo对象没有bar成员。它们也不是采用{b =&gt; ......}关闭。
你可能想要做的是:
@(foo: model.Foo)
@foo.name
<ul>
@{Query(model.Foos).filter(_.id === foo.id).flatMap(_.bars)}.foreach { b =>
<li>
@b.id
</li>
}
</ul>
请注意,您可能会遇到https://issues.scala-lang.org/browse/SI-3764,这会将自身显示为SlickException。要解决这个问题
class Bars extends IdTable[BarId, Bar]("BARS") {...}
val Bars = new Bars
而不是
object Bars extends IdTable[BarId, Bar]("BARS") {...}
你需要把val放在非顶级的地方。或者,您可以通过将表对象放在某个非静态位置(类或特征)来解决该错误。顺便说一句,Slick 2中不再触发该错误。