ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

Play2.3のroutesの書き方ではまってワロタwww orz

スポンサードリンク

f:id:aipacommander:20150222095455p:plain


Playネタ




エラーと対処方法をつらつらメモしていく。


やりたかったこととして、GETで/post/editってURIのあとに数字がきたら、その数値をPlayのメソッド(TestController.getEdit)に引数として渡す。って流れをしたかった。


最初に「こんなかんじかな? 」って、書いた記述

GET  /post/edit{<[0-9]+>id}  controllers.TestController.edit(id)


一応。できたんだけど、色々ハマったのでメモ。

メソッド名の間違い


まずメソッドがまちがえていた(お恥ずかしい)

error: Using different overloaded methods is not allowed.


メソッド名を治す

GET	  /post/edit{<[0-9]+>id}  controllers.TestController.edit(id)

引数をStringにしちゃうけど、お前の予定ではLongじゃねーの?ってエラー


こんな感じのエラーが

type mismatch;
found   : String
required: Long


指定なければ、デフォでStringになるらしい。引数の型を修正する

GET	  /post/edit{<[0-9]+>id}  controllers.TestController.getEdit(id : Long)

次は突如エラーが!!!


これで正解とおもったら突如エラーが!

value postEdit is not a member of controllers.ReverseTestController

エラー内容はわけわかめ。(なんか新しいコントローラークラスになっているし・・・)


で、ドキュメント読み返したら、どうやら記載の仕方が悪かった。


変数名を前にして$を付与したらできた。解決

GET	  /post/edit/$id<[0-9]+>  controllers.TestController.getEdit(id: Long)


これでうまくできました。