есть проблема с отношениями один к одному
У меня есть несколько матчей, и я хочу получить один счет за матч.
my Match.rb
has_one :score, :dependent => :destroy
мой счет.рб
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
мои маршруты.рб
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, есть предложения?
EDIT
отредактировал мой код, чтобы он соответствовал create_score и build_score, похоже, работает. но теперь у меня какое-то странное поведение.
в моем счете.rb
attr_accessible :score1, :score2
но когда я пытаюсь вызвать в моих матчах / show.html.haml
= @match.score.score1
я получаю неизвестный вызов метода или вообще ничего не вижу ... но если я просто вызову
= @match.score
я получил объект оценки (например, #) #
РЕДАКТИРОВАТЬ 2
Исправлена проблема. Я звонил
баллов / new.haml.html
= form_for([@match, @match.create_score])
должно быть
= form_for([@match, @match.build_score])
все работает как задумано.
необходимо для входа в консоль рельсов и выборки этих объектов, чтобы увидеть все: Score1: Score2 был ноль