私の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」を持っています、そしてそれはうまくいきます...私は何が間違っているのですか?