【问题标题】:Why do edit links in this Rails view have the same id?为什么此 Rails 视图中的编辑链接具有相同的 id?
【发布时间】:2011-12-01 16:50:04
【问题描述】:

在此模型中,预定游戏和玩家是特许经营的嵌套资源,路由设置如下:

OTH::Application.routes.draw do
  resources :franchises do
    resources :scheduled_games
    resources :players
  end

我可以正确地创建这些模型对象。但我一定是在视图中做错了什么,看起来像这样:

<% @franchise.scheduled_games.each do |game| %>
  <p class="games">
    <span class="date">   
    <b>Opponent:</b>  <%= game.opponent %> 
    <b>date:</b>    <%= game.date %>

  <%= link_to 'Edit',edit_franchise_scheduled_game_path(@franchise) %> 
  </span> </p>
<% end %>

显示此视图时有两个问题。最糟糕的是,每个编辑链接对于嵌套资源 (/franchises/1/scheduled_games/1/edit) 都有相同的 id,即使该项目的其他信息是正确的。

二是总是显示空白记录。

我哪里做错了?

更新这是 rake 路由的输出:

franchise_scheduled_games 
GET    /franchises/:franchise_id/scheduled_games(.:format)          {:action=>"index", :controller=>"scheduled_games"}
POST   /franchises/:franchise_id/scheduled_games(.:format)          {:action=>"create", :controller=>"scheduled_games"}
 new_franchise_scheduled_game 
GET    /franchises/:franchise_id/scheduled_games/new(.:format)      {:action=>"new", :controller=>"scheduled_games"}
edit_franchise_scheduled_game 
GET    /franchises/:franchise_id/scheduled_games/:id/edit(.:format) {:action=>"edit", :controller=>"scheduled_games"}
     franchise_scheduled_game 
GET    /franchises/:franchise_id/scheduled_games/:id(.:format)      {:action=>"show", :controller=>"scheduled_games"}
PUT    /franchises/:franchise_id/scheduled_games/:id(.:format)      {:action=>"update", :controller=>"scheduled_games"}
DELETE /franchises/:franchise_id/scheduled_games/:id(.:format)      {:action=>"destroy", :controller=>"scheduled_games"}

franchise_players 
GET    /franchises/:franchise_id/players(.:format)                  {:action=>"index", :controller=>"players"}
POST   /franchises/:franchise_id/players(.:format)                  {:action=>"create", :controller=>"players"}
         new_franchise_player 
GET    /franchises/:franchise_id/players/new(.:format)              {:action=>"new", :controller=>"players"}
        edit_franchise_player 
GET    /franchises/:franchise_id/players/:id/edit(.:format)         {:action=>"edit", :controller=>"players"}
             franchise_player 
GET    /franchises/:franchise_id/players/:id(.:format)              {:action=>"show", :controller=>"players"}
PUT    /franchises/:franchise_id/players/:id(.:format)              {:action=>"update", :controller=>"players"}
DELETE /franchises/:franchise_id/players/:id(.:format)              {:action=>"destroy", :controller=>"players"}

【问题讨论】:

    标签: ruby-on-rails view erb


    【解决方案1】:

    using link_to with nested resources 时还需要指定game

    edit_franchise_scheduled_game_path(@franchise, game)
    

    【讨论】:

    • 我试过了(这是我尝试的第一件事),但出现路由错误。
    • 什么是路由错误?查看rake routes 的输出也可能会有所帮助。
    • 没有路线匹配 {:action=>"edit", :controller=>"scheduled_games", :franchise_id=> 如果我直接输入 /franchises/1/scheduled_games/2/edit url,我获得正确的视图。
    • 我想我看到了部分问题,在路由错误的参数部分,我看到了#,
    • @KevDog 从@franchise.schedule_games 加载的预定游戏是否保存?即,他们有 ID 吗?
    【解决方案2】:

    因为他们使用 REST 模式,所以如果你想删除一个资源,你可以使用 HTTP/Delete 请求到与 GET 请求相同的 URL。

    【讨论】:

      猜你喜欢
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多