在我的Rails应用程序中,有很多游戏,每个游戏都有自己的排行榜。因此,将排行榜嵌套在游戏中是有道理的,因此您只能通过游戏进入排行榜。我设置了我的routes.rb文件(重要部分):
resources :games do
resources :leaderboards
end
然后我更新了我的控制器,以便从传入的game_id中获取相应的游戏,并从中获取排行榜信息。但是,我的问题来自我的看法。在本节中(来自脚手架的自动生成视图):
<% @leaderboards.each do |leaderboard| %>
<tr>
<td><%= leaderboard.name %></td>
<td><%= leaderboard.scoreColumnName %></td>
<td><%= leaderboard.game_id %></td>
<td><%= link_to 'Show', [@game, leaderboard] %></td>
<td><%= link_to 'Edit', edit_game_leaderboard_path(leaderboard) %></td>
<td><%= link_to 'Destroy', [@game, leaderboard], :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>
代码破解说:
No route matches {:action=>"edit", :controller=>"leaderboards", :game_id=>#<Leaderboard id: 1, name: "Test High Score Leaderboard", scoreColumnName: "Score", game_id: 1, created_at: "2011-07-03 01:32:33", updated_at: "2011-07-03 01:32:33">}
这一行,结果是错误:(我的代码中的第19行)
<td><%= link_to 'Edit', edit_game_leaderboard_path(leaderboard) %></td>
删除此行,视图呈现正常。因此,URL部分已损坏,但我该如何解决?奇怪的是,我在Show视图中确实有“edit_game_leaderboard_path”,它运行正常......我做错了什么?
答案 0 :(得分:2)
你想:
<%= link_to 'Edit', edit_game_leaderboard_path(@game, leaderboard) %>