0

在我的 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”,它工作正常......我做错了什么?

4

1 回答 1

2

你要:

<%= link_to 'Edit', edit_game_leaderboard_path(@game, leaderboard) %>
于 2011-07-03T02:40:57.350 回答