質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.03%

Scala(Play Framework)のCompilation errorが解決できない

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 320

ShogoHiga

score 7

前提・実現したいこと

scala(Play Framework)で簡単な投稿機能を作っています。
その実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

missing argument list for method apply in object add
Unapplied methods are only converted to functions when a function type is expected.
You can make this conversion explicit by writing `apply _` or `apply(_,_)(_)` instead of `apply`.

該当のソースコード

31    ))
32  }
33
34  def add() = Action {implicit request =>
35    Ok(views.html.add( 
36      "フォームを記入してください。",
37      form
38    ))
39  }

関連するソースコード

package controllers

import java.sql._
import javax.inject._
import play.api._
import play.api.mvc._
import play.api.data._
import play.api.data.Forms._
import play.api.db._
import PersonForm._

@Singleton
class HomeController @Inject()(db: Database, cc: MessagesControllerComponents) extends MessagesAbstractController(cc) {
  def index() = Action {implicit request =>
    var msg = "database record:<br><ul>"
    try {
      db.withConnection { conn =>
        val stmt = conn.createStatement
        val rs = stmt.executeQuery("SELECT * from people")
        while (rs.next) {
          msg += "<li>" + rs.getInt("id") + ":" + rs.getString("name") + "</li>"
        }
        msg += "</ul>"
      }
    } catch {
      case e:SQLException =>
        msg = "<li>no record...</li>"
    }
    Ok(views.html.index(
      msg
    ))
  }

  def add() = Action {implicit request =>
    Ok(views.html.add(
      "フォームを記入してください。",
      form
    ))
  }

  def create() = Action { implicit request =>
    val  formdata = form.bindFromRequest
    val data = formdata.get
    try
      db.withConnection { conn =>
        val ps = conn.prepareStatement(
          "insert into people values (default, ?, ?, ?)")
        ps.setString(1, data.name)
        ps.setString(2, data.mail)
        ps.setString(3, data.tel)
        ps.executeUpdate
      }
    catch {
      case e: SQLException =>
        Ok(views.html.add(
          "フォームに入力してください。",
          form
        ))
    }
    Redirect(routes.HomeController.index)
  }
}
package controllers

object PersonForm {
  import play.api.data._
  import play.api.data.Forms._

  case class Data(name: String, mail: String, tel: String)

  val form = Form(
    mapping(
      "name" -> text,
      "mail" -> text,
      "tel" -> text
    )(Data.apply)(Data.unapply)
  )
}

試したこと

applyをapply _apply(_,_)(_)に変えたりしましたがエラーは治りませんでした。

補足情報(FW/ツールのバージョンなど)

IntelliJ IDEAで開発を行っております。
よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.03%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る