#yesod の routes に関する質問です。
#Rails では
/blogs GET => 一覧
/blogs POST => 新規作成
/blogs/ブログID番号 GET => 内容表示
とするのが標準なので、それを真似しようと config/routes を
/blogs Blogs GET
/blogs/new NewBlog POST
/blogs/#BlogId Blog GET
にしたら
Exception when trying to run compile-time code:
Overlapping routes: ("NewBlog","Blog")
というエラーになりました。
/blogs/new を例えば /blog/new だと通ります。
これは何が起きていてどうするのがよい(rails の真似をやめた方がよいとか)でしょうか。
#ちなみに /blogs/new Blogs POST にすると Multiple declarations of `Foundation.Blogs' です。
#BlogIdってModelのBlogに対して自動的に作られるIdのことですよね?newとは型が違うから区別できそうだけどな。なんか変わったのかな。
#上記の簡単な再現方法を書いておきます。yesod init したところに以下のパッチを当てて yesod devel してください。
#--- config/models.org
+++ config/models
@@ -10,2 +10,5 @@
-- By default this file is used in Model.hs (which is imported by Foundation.hs)
+
+Blog
+ subject Text
--- config/routes.org
+++ config/routes
@@ -6,2 +6,5 @@
/ HomeR GET POST
+
+/blogs/new NewBlogR POST
+/blogs/#BlogId BlogR GET
--- Handler/Home.hs.org
+++ Handler/Home.hs
@@ -38,2 +38,5 @@
<$> fileAFormReq "Choose a file"
<*> areq textField "What's on the file?" Nothing
+
+postNewBlogR = return ()
+getBlogR blogId = return ()