2016-02-18 7 views
6

मैं स्काला में इस नियंत्रक है:स्काला - play.api.mvc.Result अनुरोधों के लिए एक हेन्डलर के रूप में वापस एक विधि का उपयोग नहीं किया जा सकता

def commonRedirect(anId: Long) = { 
implicit val aRule = CommonClient.getTheRule(anId) 
aRule match { 
    case false ⇒ Redirect("/general-rule/" + anId) 
    case true ⇒ Redirect("/custom-rule/" + anId) 
} 

} लेकिन, गलती से यह परिणाम: " अनुरोध के लिए हैंडलर के रूप में play.api.mvc.Result लौटने की विधि का उपयोग नहीं कर सकता "।

यदि मैं एक एक्शन बिल्डर लागू करता हूं, तो यह काम करता है, लेकिन यह वही तरीका नहीं है जो मैं चाहता हूं।

इसे हल करने के लिए कोई विचार?

धन्यवाद।

+0

क्या आप निर्दिष्ट कर सकते हैं कि आप 'commonRedirect' का उपयोग कैसे करना चाहते हैं। मुझे आपके कोड में कोई त्रुटि नहीं है। –

उत्तर

11

आपको Action बनाने की आवश्यकता है।

def commonRedirect(anId: Long) = Action { 
    implicit val aRule = CommonClient.getTheRule(anId) 
    aRule match { 
    case false ⇒ Redirect("/general-rule/" + anId) 
    case true ⇒ Redirect("/custom-rule/" + anId) 
    } 
} 
+0

धन्यवाद @ पॉल-ड्रॉपर। मैंने http://stackoverflow.com/a/28247637/1665906 में पाया कि इसके लिए आवश्यक प्रकार केवल 'परिणाम' नहीं है लेकिन '⇒ परिणाम 'है, और यह एक क्रिया है। – Lucas

संबंधित मुद्दे

 संबंधित मुद्दे