0

これは本当に明白なはずです。だったらごめんなさい。

Teamsレールにとの 2 つの足場を作成しましたPlayers。問題なく動作しました。Teamただし、 aには多くのものがあり、 aPlayersPlayers属しているため、それらをリンクしたかったのTeamです。そこで、それぞれのモデルに入り、関連付けを作成しました。いろいろ読んだところPlayers、外部キーを格納するために新しい列を作成する必要があることがわかったので、移行でそれを行いました。それを呼び出してteam_id、作成した 5 つのレコードのうち 4 つを更新し、ID を1. 基本的に、この回答が指示したこと。

私が今理解していないのは、その関連付けをどのように使用するのですか? では、特定の例を得るには、そのチームの ID に基づいてPlayersinの show.html.erb モデルをすべて一覧表示するにはどうすればよいでしょうか? 何らかの方法でコントローラーTeamを呼び出す必要がありますか?Players


スキーマ:

ActiveRecord::Schema.define(:version => 20130303052538) do

  create_table "players", :force => true do |t|
    t.string   "position"
    t.integer  "number"
    t.integer  "grade"
    t.datetime "created_at",  :null => false
    t.datetime "updated_at",  :null => false
    t.string   "first_name"
    t.string   "middle_name"
    t.string   "last_name"
    t.integer  "team_id"
  end

  create_table "teams", :force => true do |t|
    t.string   "name"
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
  end

end

モデル(簡潔にするためにここにまとめました):

class Player < ActiveRecord::Base
  attr_accessible :grade, :first_name, :middle_name, :last_name, :number, :position, :team_id

  # Relationships
  belongs_to :team
end

class Team < ActiveRecord::Base
  attr_accessible :name

  # Relationships
  has_many :players
end

私のTeamコントローラーの一部:

class TeamsController < ApplicationController

  def show
    @team = Team.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @team }
    end
  end

end

意見:

<p id="notice"><%= notice %></p>

<p>
  <b>Name:</b>
  <%= @team.name %>
  <%= @team.id %>
</p>
<p>
  <b>Players:</b>
  # I want to list them here.

</p>


<%= link_to 'Edit', edit_team_path(@team) %> |
<%= link_to 'Back', teams_path %>
4

1 に答える 1

1

ここでドキュメントを読むことをお勧めします: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

プレーヤーのチームには次の方法でアクセスできます。

player.team

また、次の方法でチームのプレーヤーにアクセスできます。

team.players

次に、ビューでこれらのプレーヤーを反復処理します

team.players.each do |player|

end

belongs_toモデルで呼び出したやのようなクラス メソッドは、has_manyメソッドを生成します。

たとえば、、、などbelongs_to :teamを生成します。teamteam=(team)build_team(attributes)create_team(attributes)

于 2013-03-03T18:34:42.867 に答える