0

という名前のモデルがありContestます。にはのContest多くのインスタンスを含めることができますAthlete。これは、Contestモデルでは次のように定義されています。

def athletes
  team.athletes
end

この場合、Contestも定義しますbelongs_to :team

コンテスト ビューで、すべてのアスリートをループするパーシャルを表示したいと考えています。私はこのようなことを試しました:

<%= render :partial => 'athletes', :collection => @contest.athletes %>

最上位のビュー/アプリケーションディレクトリでチェックしているため、パーシャルが欠落しているとリストされています。

コンテスト <-> アスリート間の関係を定義し、コンテスト ビューでパーシャルをレンダリングするより良い方法はありますか?

4

1 に答える 1

0

ここにいくつかの未テストのコードがあります:

# Models
class Team < ActiveRecord::Base
  has_many :athletes

class Contest < ActiveRecord::Base
  belongs_to :team
  has_many :athletes, :through => team
end

# View
<%= render(@contest.athletes) %>

# or 
<%= render :partial => "contest/athlete", :collection => @contest.athletes %>

Contest#athletes自分でを定義する代わりにhas_many :through、レールの を使用できます。

パーシャルを使用する場合、パーシャルが格納されるパスを定義することもできます。たとえば、コンテストが特別なケースでアスリートをレンダリングする場合、次の場所にパリアルを保存することができます。app/views/contests/_athlete.html.erb

そして、上記のコードのようにレンダリングできます。(注: コードには「_」はありませんが、ファイル名にはあります)

于 2013-04-15T01:13:24.287 に答える