2012-01-31 115 views
0

我对ruby非常陌生,现在尝试开发一些东西。Ruby on Rails路由错误:Missing:game_id

但是在路由方面我遇到了一个小错误。

我的routes.rb

resources :games do 
resources :matches 
end 

game.rb

has_many :matches 

match.rb

belongs_to :game 

耙路线

new_game_match GET /games/:game_id/matches/new(.:format)  matches#new 

发生错误:

<%= link_to 'Add Match', new_game_match_path %> 

什么错误告诉:

No route matches [GET] "/games/matches/new" 

现在我不知道他为什么不路由与它的,为什么它会引发这个错误的game_id ..

任何人都可以帮助我PLZ?

如果有帮助,模型和控制器都是脚手架,但匹配控制器被编辑以适应关系。

回答

2

new_game_match_path帮手需要game参数来从中拉出game_id参数。

给定一个游戏ID为123,存储在一个名为@game变量,你会调用它是这样的:

new_game_match_path(@game) 

这将返回类似这样的路径:

/games/123/matches/new 

当你窝路线这样,你让一个特定gamematch,并且不包括@game参数有没有办法BUIL d网址。

您也可以使用数组语法。以下是相当于new_game_match_path(@game)

<%= link_to 'Add Match', [:new, @game, :match] %> 
0

你必须提供一个game对象到你的助手,在new_game_match_path(game)。您可以在rake routes输出中看到它预计有game_id

0

matches路线嵌套在game。这意味着一场比赛只有在比赛中才有意义。

提供有效的游戏,您的网址助手

<%= link_to 'Add Match', new_game_match_path(@game) %>