2013-10-10 66 views
1

我有3條路線重寫方法似乎不起作用

POST /api/v1/items/ controllers.Application.update 
POST /api/v1/items/:item_type controllers.Application.update(item_type: String) 
POST /api/v1/items/:item_type/:id/ controllers.Application.update(item_type: String, id: Int) 

和3其對應的動作。而一個錯誤:

[error] /my_app/conf/routes:3: method update is defined twice 
[error] conflicting symbols both originated in file '/home/alex/my_app/target/scala-2.10/src_managed/main/routes_reverseRouting.scala' 
[error] POST /api/v1/items/:item_type/:id/ controllers.Application.update(item_type: String, id: Int) 

請注意,不應該是參數的任何缺省值,這就是爲什麼我需要分開這些行動。

+0

你能使用不同的名稱爲您'update'方法是什麼?我認爲問題來自於不喜歡重載方法。 – tehlexx

回答

1

遊戲中的方法是按名稱調用的。參數被省略。方法的名稱必須是唯一的。你不能對控制器相同的名稱(如果你在兩個包有)

請使用默認參數:

POST /api/v1/items/ controllers.Application.update(item_type: String = "", id: Int = 0) 
POST /api/v1/items/:item_type controllers.Application.update(item_type: String, id Int =0) 
POST /api/v1/items/:item_type/:id/ controllers.Application.update(item_type: String, id: Int) 
+0

這些方法有獨特的名字嗎?有3個更新。 –

+0

您可以編寫3種方法 - 也可以在路由中設置默認值並僅調用controllers.Application.update(item_type:String,id:Int)'。其他方法可以刪除。 –