2015-09-12 53 views
4

指定多個參數我有這個在我的router.ex:如何鏈接

resources "/games", GamesController do 
    get "/scores/:student_id", GameScoreController, :new 
    post "/scores/:student_id", GameScoreController, :create 
end 

現在我與調用此:

link(student.name, to: game_game_score_path(@conn, :new, @game, student_id: student)) 

但是,創建一個鏈接:/遊戲/ 1 /分數?student_id = 1而不是/ games/1/scores/1。

如何調用鏈接以便生成正確的url?

哦,有沒有辦法擺脫幫手中的雙重遊戲? 我嘗試添加爲::game_score,但沒有改變任何東西。

回答

2

定義路線爲:

resources "/games", GameController do 
    get "/scores/:student_id", ScoreController, :new 
    post "/scores/:student_id", ScoreController, :create 
end 

注一切都在鳳凰單數,包括控制器名。 URL是複數形式,但它是外部的,它並不指示你的代碼是如何組織的。

和URL幫手:

link(student.name, to: game_game_score_path(@conn, :new, @game, student)) 

如果你想將控制器GameScoreController,你可以傳遞:as選項自定義生成的幫手。 Phoenix文檔中的更多信息:http://hexdocs.pm/phoenix/Phoenix.Router.html#resources/4

+1

我不知道我改變了什麼,除了添加第三條路線,但鏈接突然有效。我的控制器是GameScoreController,我需要用作::score,現在也可以使用。完善!謝謝! –