2016-07-05 9 views
1

ich eine komplexere Einschränkungen für das Routing haben, warum ist dieses einfache Beispiel nicht funktioniert:Rails Routing mit Constraint-Klasse nicht wie erwartet funktioniert

class FooBar 
    def self.matches?(request) 
    true 
    end 
end 

get ':foo', to: redirect('/bar'), constraints: FooBar.new 

Alles, was ich bekommen ist

Invalid constraint: #<FooBar:0x007f87f14dce40> must respond to :call or :matches? 

Irgendwelche Ideen, wie um es funktionieren zu lassen? Vielen Dank.

+0

Sie müssen 'FooBar' in Ihrem Fall nicht instanziieren – oreoluwa

Antwort

2

muss antworten auf: call or: matches?

Was bedeuten die Instanz des FooBar eine Methode haben muss (nicht die Klassenmethode wie in Ihrem Code) matches:

class FooBar 
    def matches?(request) 
    true 
    end 
end 

Oder responde zu call, proc in meinem Beispiel:

FooBar = proc do |request| 
    # here goes code 
end 

get ':foo', to: redirect('/bar'), constraints: FooBar 
+0

Vielen Dank! Funktioniert jetzt. Ich werde zu Proc wechseln. – Calmon

Verwandte Themen