2017-08-01 3 views
1

Je veux avoir 2 fonctions d'index dans mon contrôleur, une s'il y a un appel avec un identifiant et une s'il y a un identifiant avec une chaîne de requête de recherche. Pour une raison quelconque, la 2e fonction n'est jamais appelée.Phoenix pattern match dans le contrôleur

curl localhost:4000/something/15 
curl localhost:4000/something/15?search=bob 

def index(conn, %{"id" => id}) do 
end 

def index(conn, %{"id" => id}, "search" => search }) do 
end 

Répondre

2

Parce que la correspondance fonctionne par le haut. Si id correspond, la recherche n'est jamais vérifiée. Vous devriez mettre plus de cas courants en bas, et plus particulièrement en haut. Peut-être que vous devriez également intégrer les paramètres GET dans une carte, je ne suis pas sûr. Je suppose que c'est une erreur de syntaxe ici:

search }) do