これはおそらく簡単な解決策ですが、私は困惑しています。
次のテーブルを表示したい: イベント名 | イベントアスリート結果 | イベントアスリートスコア
pry コンソールでデータを確認すると、すべてが正しくリンクされています。例えば。@athlete.event_athletes.first.event.name
これにより、イベントの正しい名前が返されます。
ただし、ブラウザー (つまりea.event.name
) でデータを表示しようとすると、次のエラーが表示されます。
「nil:NilClass の /athletes/1 未定義メソッド `name' で NoMethodError」
これは、強力なパラメーターの問題であると思われます。
https://github.com/thaczuk/scoring/tree/eventScoring アドバイスをお願いします。
モデル
class Athlete < ActiveRecord::Base
belongs_to :competition
belongs_to :competition_category
has_many :event_athletes
has_many :events, through: :event_athletes
end
class Event < ActiveRecord::Base
belongs_to :competition
has_many :event_athletes
has_many :athletes, through: :event_athletes
end
class EventAthlete < ActiveRecord::Base
belongs_to :athlete
belongs_to :event
end
コントローラ
class AthletesController < ApplicationController
...
def show
@athlete = Athlete.find(params[:id])
binding.pry
end
...
private
def athlete_params
params.require(:athlete).permit(:firstname, :lastname, :gender, :competition_id, :competition_category_id)
end
end
意見
%div
%table.table
%thead
%tr
%th(width="30%") Event
%th Result
%th Score
%tbody
-@athlete.event_athletes.each do |ea|
%tr
%td= ea.event.name
%td= ea.result
%td= ea.score