日頃の行い

個人的な日頃の行いをつらつら書いてます\\\\ ٩( 'ω' )و ////

Scala Play Framework のmain.scala.html #3

・ controller
・ viewsの1ファイル
・ viewsのmain(テンプレート)

の関係がわかったので書いておこうと思う。

package controllers

import play.api._
import play.api.mvc._

object Application extends Controller {

  def index = Action {
    Ok(views.html.index("Your new application is ready."))
  }

}


Ok(views.html.index("Your new application is ready."))
の引数の数と

views/index.scala.html

@(message: String)

@main("Welcome to Play 2.0") {
<h1>Template</h1>
}


@(message: String)
の括弧の数は一致しなければならない。

Ok(views.html.index("Hoge","Fuga"))

なら

@(hoge_message: String)(fuga_message:String)

みたいにしないといけない。


んで、

@main("Welcome to Play 2.0") {
<h1>Template</h1>
}

の括弧の数と

views/main.scala.html

@(title: String)(main: Html)

<!DOCTYPE html>
<html>
    <head>
        <title>@title</title>
        <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/bootstrap.css")">
        <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")">
        <script src="@routes.Assets.at("javascripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
    </head>
    <body>
        <div class="container">
            <div class="hero-unit">
                @main
            </div>
        </div>
    </body>
</html>

@(title: String)(main: Html)

の括弧の数は一致しなければならない。
もし、

@main("Welcome to Play 2.0") {
<h1>Template</h1>
}("hogehoge")

にするなら

@(title: String)(main: Html)(hoge:String)

にしないといけない。

コントローラのViewを呼び出す関数の引数の数
=viewで呼び出されてるファイルの変数宣言の数

view内のmain関数の括弧の数
=mainファイルの変数宣言の数

ってなってる。んで、
変数宣言の型がStringなら( )
Htmlなら{ }
にしなければならない。