Ошибка маршрутизации Ruby on Rails: отсутствует: game_id - PullRequest
0 голосов
/ 31 января 2012

Я довольно новичок в ruby ​​и сейчас пытаюсь что-то разработать.

Но я получил небольшую ошибку при маршрутизации.

мои маршруты.рб

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 с ним, и почему возникает эта ошибка ..

кто-нибудь может мне помочь плз?

если это поможет, обе модели и контроллер были в лесах, но контроллер совпадений был отредактирован для соответствия отношениям.

Ответы [ 3 ]

2 голосов
/ 31 января 2012

Помощник new_game_match_path ожидает аргумент game, из которого можно извлечь параметр game_id.

Для игры с идентификатором 123, хранящейся в переменной с именем @game, вы должны вызывать ее следующим образом:

new_game_match_path(@game)

Что бы вернуть путь, подобный этому:

/games/123/matches/new

Когда вы вкладываете маршруты таким образом, вы создаете новый match для определенного game, и без включения параметра @game невозможно создать URL.

Вы также можете использовать синтаксис массива. Следующее эквивалентно new_game_match_path(@game):

<%= link_to 'Add Match', [:new, @game, :match] %>
0 голосов
/ 31 января 2012

Ваш matches маршрут вложен в game.Это означает, что совпадение имеет смысл только в контексте игры.

Предоставьте действительную игру вашему помощнику по URL

<%= link_to 'Add Match', new_game_match_path(@game) %>
0 голосов
/ 31 января 2012

Вы должны предоставить объект game вашему помощнику, как в new_game_match_path(game).В выводе rake routes видно, что он ожидает game_id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...