Почему ссылки редактирования в этом представлении Rails имеют одинаковый идентификатор? - PullRequest
0 голосов
/ 01 декабря 2011

В этой модели запланированные игры и игроки являются вложенными ресурсами франшизы, а маршрутизация настроена следующим образом:

OTH::Application.routes.draw do
  resources :franchises do
    resources :scheduled_games
    resources :players
  end

Я могу правильно создать эти объекты модели. Но я, должно быть, делаю что-то не так в представлении, которое выглядит так:

<% @franchise.scheduled_games.each do |game| %>
  <p class="games">
    <span class="date">   
    <b>Opponent:</b>  <%= game.opponent %> 
    <b>date:</b>    <%= game.date %>

  <%= link_to 'Edit',edit_franchise_scheduled_game_path(@franchise) %> 
  </span> </p>
<% end %>

Есть две вещи, которые идут не так, когда отображается это представление. Хуже всего то, что каждая ссылка для редактирования имеет одинаковый идентификатор для вложенного ресурса (/ franchises / 1 / schedule_games / 1 / edit), даже если другая информация для элемента верна.

Во-вторых, пустая запись всегда отображается.

Где я ошибся?

Обновление Вот вывод маршрутизации:

franchise_scheduled_games 
GET    /franchises/:franchise_id/scheduled_games(.:format)          {:action=>"index", :controller=>"scheduled_games"}
POST   /franchises/:franchise_id/scheduled_games(.:format)          {:action=>"create", :controller=>"scheduled_games"}
 new_franchise_scheduled_game 
GET    /franchises/:franchise_id/scheduled_games/new(.:format)      {:action=>"new", :controller=>"scheduled_games"}
edit_franchise_scheduled_game 
GET    /franchises/:franchise_id/scheduled_games/:id/edit(.:format) {:action=>"edit", :controller=>"scheduled_games"}
     franchise_scheduled_game 
GET    /franchises/:franchise_id/scheduled_games/:id(.:format)      {:action=>"show", :controller=>"scheduled_games"}
PUT    /franchises/:franchise_id/scheduled_games/:id(.:format)      {:action=>"update", :controller=>"scheduled_games"}
DELETE /franchises/:franchise_id/scheduled_games/:id(.:format)      {:action=>"destroy", :controller=>"scheduled_games"}

franchise_players 
GET    /franchises/:franchise_id/players(.:format)                  {:action=>"index", :controller=>"players"}
POST   /franchises/:franchise_id/players(.:format)                  {:action=>"create", :controller=>"players"}
         new_franchise_player 
GET    /franchises/:franchise_id/players/new(.:format)              {:action=>"new", :controller=>"players"}
        edit_franchise_player 
GET    /franchises/:franchise_id/players/:id/edit(.:format)         {:action=>"edit", :controller=>"players"}
             franchise_player 
GET    /franchises/:franchise_id/players/:id(.:format)              {:action=>"show", :controller=>"players"}
PUT    /franchises/:franchise_id/players/:id(.:format)              {:action=>"update", :controller=>"players"}
DELETE /franchises/:franchise_id/players/:id(.:format)              {:action=>"destroy", :controller=>"players"}

Ответы [ 2 ]

1 голос
/ 01 декабря 2011

Вам также необходимо указать game, когда использует link_to с вложенными ресурсами :

edit_franchise_scheduled_game_path(@franchise, game)
0 голосов
/ 01 декабря 2011

Поскольку они используют шаблон REST, поэтому, если вы хотите удалить ресурс, вы используете HTTP / запрос на удаление по тому же URL-адресу, что и для запроса GET.

...