2017-08-01 36 views
1

我想在我的控制器中有兩個索引函數,一個是有一個id的調用,一個是否有一個帶有搜索查詢字符串的id。出於某種原因,第二個功能從未被調用過。控制器中的鳳凰模式匹配

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 

回答

2

因爲匹配從頂部起作用。如果id匹配,搜索從不被檢查。 你應該把更常見的情況放在底部,更特別的是頂部。

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

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

也許你應該將GET參數包裝到地圖中,我也不確定。我想這是一個語法錯誤在這裏:

search }) do