如何建立一个包含两个或多个参数的网址?
我有一个案例类:
case class PageDetail(index: String, id: String)
我正在尝试做菜单:
val menu = Menu.params[(String,String)]( "pageDetail", "Page Detail",
ids => { case Full(index) :: Full(id) :: Nil => Full((index, id))},
pi => { case (index, id) => index :: id :: Nil }) / "admin" / "detail"
我想获得一个链接为... / admin / detail / indexxxxxxx / idddddddddd其中indexxxxxxx和idddddddddd是我的参数。 因为是行不通的。编译时出错。我能怎么做? 感谢
答案 0 :(得分:2)
最有可能的问题是你的提取器模式。当您在列表中匹配时:
case Full(index) :: Full(id) :: Nil => Full((index, id))
始终要定义参数,因此无法Full
。您可以使用AsInt
等函数来要求参数为Int,否则它将查找String。你很可能想从以下开始(或者有一些变化):
case index :: id :: Nil => Full((index, id))
如果您使用Empty表示该参数是可选的,那么您只需在其后添加第二个case
语句并省略该参数。
此外,您可能需要将/ **
添加到/ "admin" / "detail"
映射的末尾,以便它知道从那里获取参数。
所以,代码看起来应该是这样的:
val menu = Menu.params[(String,String)]( "pageDetail", "Page Detail",
{
case index :: id :: Nil => Full((index, id))
}, {
case (index, id) => index :: id :: Nil
}
) / "admin" / "detail" / **