Один-к-одному: неопределенный метод сборки
есть проблема с отношениями один к одному
У меня есть несколько матчей, и я хочу получить один счет за матч.
мой Match.rb
has_one :score, :dependent => :destroy
мой счет
belongs_to :match
мой 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, есть предложения?
РЕДАКТИРОВАТЬ
отредактировал мой код, чтобы он соответствовал create_score и build_score, похоже, работает. но сейчас у меня какое-то странное поведение.
в моем 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])
все работает как задумано.
необходимо войти в консоль rails и получить эти объекты, чтобы увидеть все: Score1: Score2 был ноль