2016-10-04 8 views
0

私はスポーツ選手がブログ投稿を作成できるウェブサイトを作っています。Rails:1対多のパラメータ

class Player < ApplicationRecord 

    has_many :blogs, dependent: :destroy 

end 


class Blog < ApplicationRecord 

    belongs_to :player 

end 

私の質問は:

次の二つのparamsを持つルート/コントローラのアクションを設定するとの違いは何ですか?彼らは私にまったく同じことを与えています。

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

次の二つのparamsでルート/コントローラのアクション を設定の違いは何ですか?あなたは異なるキー:player_id & :id)を使用している以外

、これら2つの名前付きルートの間差はなかっがあります。最初のルートは、のプレイヤーインスタンスブログコントローラにフェッチしてからお勧めします。

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 
関連する問題