0

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

错误内容如下:

方法应用的参数太多:对象dailyChart中的()play.api.templates.Html

有一个观点认为我可以推测出 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>
4

1 回答 1

1

我能看到的唯一问题是:

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

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

于 2013-04-05T20:59:18.147 回答