代码之家  ›  专栏  ›  技术社区  ›  Nathan Long

Rails:如何只嵌套相关的资源?

  •  0
  • Nathan Long  · 技术社区  · 15 年前

    map.resources :players
    map.resources :teams, :has_many => :players
    

    通过这样做,您可以访问teams/1/players并查看列表。但它列出了所有的球员,而不仅仅是那些属于一队的球员。

    2 回复  |  直到 15 年前
        1
  •  3
  •   Dave Pirotte    15 年前

    你得先把队伍装好。通常的做法是在前置过滤器中执行此操作。

    class PlayersController < ActionController::Base
      before_filter :get_team
    
      def get_team
        @team = Team.find(params[:team_id])
      end
    
      def index
        @players = @team.players # add pagination, etc., if necessary
      end
    
      def show
        @player = @team.players.find(params[:id])
      end
    end
    

    params[:team_id] ).

    如果您的控制器逻辑简单明了,那么可以使用优秀的继承资源gem来解决这个问题。

        2
  •  0
  •   Nikita Rybak    15 年前

    这个问题与我们的关系不大 map.resources 以及一般的路由。

    注意,玩家并不是被框架神奇地抓取的:在一些控制器处理中有一些动作 teams/1/players