在我的 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 部分已损坏,但我该如何修复它呢?奇怪的是,我在“显示”视图中有确切的“edit_game_leaderboard_path”,它工作正常......我做错了什么?