Rails自定义路由重定向到显示

我已经创建了一个自定义路由make_winner_pick但是每次单击链接以遵循路径时控制器默认为show动作。 我无法理解我做错了什么,这让我疯了

的routes.rb

 resources :league_members get "league_members/make_winner_pick" => "league_members#make_winner_pick", :as => :make_winner_pick 

调用路径的位置

  

控制台

  Started GET "/league_members/make_winner_pick?league=3" for 127.0.0.1 at 2015-08-29 01:33:56 +0100 Processing by LeagueMembersController#show as HTML Parameters: {"league"=>"3", "id"=>"make_winner_pick"} User Load (0.9ms) SELECT "users".* FROM "users" WHERE "users"."id" = 2 ORDER BY "users"."id" ASC LIMIT 1 LeagueMember Load (0.5ms) SELECT "league_members".* FROM "league_members" WHERE "league_members"."id" = $1 ORDER BY "league_members"."id" ASC LIMIT 1 [["id", 0]] Completed 404 Not Found in 5ms ActiveRecord::RecordNotFound (Couldn't find LeagueMember with 'id'=make_winner_pick): app/controllers/league_members_controller.rb:68:in `set_league_member' 

任何人都可以告诉我为什么我的自定义路线没有被解雇,Rails默认为#show动作? 出于某种原因,它似乎正在寻找一个league_membermake_winner_pick

谢谢你的期待。

尝试在资源中嵌套您的路线:

 resources :league_members do collection do get "make_winner_pick" => "league_members#make_winner_pick", :as => :make_winner_pick end end 

因为rails将您的路线make_winner_pick识别为id

它应该是:

<%= link_to 'Join League', league_members_make_winner_pick_path(league: league.id), method: :get %>