得到了一對一的關係問題一對一:未定義的方法版本
我有一些比賽,我想有一個比賽的比分。
我Match.rb
has_one :score, :dependent => :destroy
我score.rb
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
我的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
,我沒有使用一對一的關係,到目前爲止,因爲我很新的努力的回報率,有什麼建議麼?
編輯
編輯我的代碼以匹配create_score和build_score,似乎工作。但現在我有一些奇怪的行爲。
我score.rbattr_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是零
創造得分既然你設置'@score = ...'控制器,你可以這樣做:'的form_for([@比賽,@得分])' – 2012-02-29 19:12:12
謝謝,但這個設置是暫時的,不會永遠呆在那裏;)但是,謝謝你的建議。 – cschaeffler 2012-02-29 23:03:26