2016-10-04 44 views
0

我正在爲我的運動隊製作一個網站,供玩家發佈博客文章。Rails:一對多參數

class Player < ApplicationRecord 

    has_many :blogs, dependent: :destroy 

end 


class Blog < ApplicationRecord 

    belongs_to :player 

end 

我的問題是:

是什麼設置了以下兩個參數的路由/控制器動作之間的區別?他們都給我完全一樣的東西。

1)

路線:

get "players/:player_id/posts" => "blogs#show", as: "player_posts" 

控制器動作:

class BlogsController < ApplicationController 
    def show 
     @player = Player.find(params[:player_id]) 
     @blogs = @player.blogs 
    end 
end 

2)

路線:

get "players/:id/posts" => "blogs#show", as: "player_posts" 

控制器動作:

class BlogsController < ApplicationController 
    def show 
     @player = Player.find(params[:id]) 
     @blogs = @player.blogs 
    end 
end 

回答

1

是什麼設置的路線/控制器動作 有以下兩個參數之間的區別?

沒有區別這兩個命名路由之間,除正在使用不同的密鑰:player_id & :id)。我建議您提取第一條路線玩家實例博客控制器

get "players/:player_id/posts" => "blogs#show", as: "player_posts" 

#controller action: 

class BlogsController < ApplicationController 
    def show 
    @player = Player.find(params[:player_id]) #players instance 
    @blogs = @player.blogs 
    end 
end