Scala 电梯网络框架干式调度
我有一个图像类:Scala 电梯网络框架干式调度,scala,dry,dispatcher,lift,Scala,Dry,Dispatcher,Lift,我有一个图像类: class Image extends LongKeyedMapper[Image] with IdPK with Logger { 哪个覆盖了HTML方法: override def toHtml = <img src={"/gallery/image/%s/%s/%s/%s" format (slug.is, "fit", 100, 100)} /> 正如您所看到的,这是一种不枯燥的方法,因为您必须定义两次URL(/gallery/image) 可以把它
class Image extends LongKeyedMapper[Image] with IdPK with Logger {
哪个覆盖了HTML方法:
override def toHtml =
<img src={"/gallery/image/%s/%s/%s/%s" format (slug.is, "fit", 100, 100)} />
正如您所看到的,这是一种不枯燥的方法,因为您必须定义两次URL(/gallery/image)
可以把它弄干吗?你能从LiftRules什么地方找到路吗
提前感谢,,
Etam.电梯名单上的回答是:
简言之,你:
将公共事物(在本例中为路径)封装在对象中:
object ImageGallery {
val path = "gallery" :: "image" :: Nil
val pathLen = path.length
def prefix = path.mkString("/", "/", "/")
}
创建一个自定义的unapply方法,该方法允许您在分派方法中使用模式匹配中的对象
object ImageGallery {
// ...
def unapply(in: List[String]): Option[List[String]] =
Some(in.drop(pathLen)).filter(ignore => in.startsWith(path))
}
您的代码现在是:
<img src={ImageGallery.prefix+"%s/%s" ...}>
有关更多建议,请参阅消息线程。我对Lift一无所知,但我不认为这是在重复您的SEF。我觉得它更像
val a=“foo”;println(a)
,我确实提到了a
两次,一次说a
做什么,一次叫它。我想URL字符串的创建方式可能存在错误,但它仍然足够简单……Django-HttpResponseRedirect(reverse('arch-summary',args=[1945])中有一些我喜欢的东西。相反的方法是我正在寻找的。
<img src={ImageGallery.prefix+"%s/%s" ...}>
case Req(ImageGallery(slug :: method :: width :: height :: _), _, _) => // ...