Play2模板中的参数太多

时间:2013-04-05 20:25:44

标签: scala playframework-2.0

我有一个简单的应用程序,在构建过程中,我遇到了一个复杂的错误,我无法确定原因。 (完全披露:这是我的第一个scala / play项目)

错误如下:

方法适用的参数太多:()play.api.templates.Html in object dailyChart

视图中有一个论点,我可以推测一个GlucoseReadings列表。控制器正在传递模型提供的GlucoseReadings列表,所以当参数和类型的数量匹配时,我很遗憾为什么太多多个参数。

我有一个简单的模型,控制器和视图,最终会显示一天的葡萄糖读数简单图表。

模型如下(在文件GlucoseReadings.scala中):

package models

import play.api.db._
import play.api.Play.current

import anorm._
import anorm.SqlParser._

import org.joda.time._
import java.util.Date

case class GlucoseReading(
    id: Int, mgdl: Int, recordTime: DateTime
)

object GlucoseReading {

  val glucoseReading = {
    get[Int]("id") ~
    get[Int]("mgdL") ~
    get[Date]("recordTime") map {
            case id~mgdL~recordTime => GlucoseReading(id, mgdL, new DateTime(recordTime))
        }
  }

  def dailyReadings(date: DateTime): List[GlucoseReading] = {
        DB.withConnection { implicit connection =>
        SQL("""
                SELECT 
          id,
                recordTime,
          mgDl
                FROM GlucoseReading
                ORDER BY recordDate DESC
            """).as(glucoseReading *)
    }
  }
}

控制器(在文件GlucoseReadingsController.scala中):

package controllers

import play.api.mvc._
import play.api.data._
import play.api.data.Forms._

import org.joda.time._

import models.GlucoseReading

object GlucoseReadingsController extends Controller {

  def daily(year: Int, month: Int, day: Int) = Action {
    val date = new DateTime(year, month, day,0,0)
    val readings = GlucoseReading.dailyReadings(date)
    Ok(views.html.dailyChart(readings))
  }

}

和视图(在文件dailyChart.scala.html中):

@(readings: List[GlucoseReading])

@import helper._

@main("Day With Read") {

    <ul>
        @reading.map { reading =>
            <li>
                I'm a glucose reading
            </li>
        }
    </ul>    
}

根据评论,main模板位于

之下
@(title: String)(content: Html)

<!DOCTYPE html>

<html>
    <head>
        <title>@title</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
    </head>
    <body>
        @content
        <script src="http://code.jquery.com/jquery.js"></script>
        <script src="js/bootstrap.min.js"></script>
    </body>
</html>

1 个答案:

答案 0 :(得分:1)

我能看到的唯一问题是:

<ul>
    @reading.map { reading =>
        <li>

它应该编译得很好,你将其改为@readings.map。如果没有,请退出play并删除您的target目录,然后重试。