Rails 3使用嵌套资源进行路由错误

时间:2011-07-03 02:38:19

标签: ruby-on-rails ruby-on-rails-3 routing routes nested-resources

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

1 个答案:

答案 0 :(得分:2)

你想:

<%= link_to 'Edit', edit_game_leaderboard_path(@game, leaderboard) %>