возникла проблема с отношениями один к одному
У меня есть несколько матчи, и я хочу иметь один балл для матча.
my Match.rb
has_one :score, :dependent => :destroy
мой счет .rb
belongs_to :match
my scores_controller.rb
def new
@match = Match.find(params[:match_id])
@score = @match.score.new
end
def create
@match = Match.find(params[:match_id])
@score = @match.score.create(params[:score])
end
my routes.rb
resources :matches do
resources :scores
end
мои оценки /new.html.haml
= form_for([@match, @match.score.build]) do |f|
= f.label :score1
= f.text_field :score1
%br
= f.label :score2
=f.text_field :score2
%br
= f.submit
моя ошибка, что я получаю
undefined method `new' for nil:NilClass
Я пока не работал с отношениями один к одному, так как я довольно новичок в RoR, любые предложения?
ИЗМЕНИТЬ
отредактировал мой код для соответствия create_score и build_score, похоже, работает. но теперь у меня есть странное поведение.
в моем счете .rb
attr_accessible :score1, :score2
но когда я пытаюсь вызвать в своих матчах /show.html.haml
= @match.score.score1
Я получаю неизвестный вызов метода, или я вообще ничего не вижу... но если я просто позвоню
= @match.score
Я получаю возвращаемый объект оценки (например, #) #
РЕДАКТИРОВАТЬ 2
Задача Fix'd. Я звонил
оценки/new.haml.html
= form_for([@match, @match.create_score])
должно быть
= form_for([@match, @match.build_score])
все работает по назначению.
необходимо войти в консоль рельсов и получить эти объекты, чтобы увидеть каждый: score1: score2 was nil