2012-01-31 11 views
0

私はルビーには新しく、現在は何かを開発しようとしています。Ruby on Railsルーティングエラー:行方不明: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と想定しています。このようなパスを返します

new_game_match_path(@game) 

/games/123/matches/new 

いつ巣

@gameという変数に格納されているID 123でゲーム、考えると、あなたはこのようにそれを呼び出します。この方法では、新しいmatchに指定してgameとし、@gameパラメータを指定しないとビルドする方法はありませんd URL。

また、配列構文を使用することもできます。以下はnew_game_match_path(@game)と同等です:

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

new_game_match_path(game)のように、gameオブジェクトをヘルパーに提供する必要があります。 rake routes出力には、game_idが含まれていることがわかります。

0

あなたmatchesルートがgame内にネストされます。これは、試合がゲームの中でのみ意味があることを意味します。

あなたのurlヘルパーに有効なゲームを提供

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