2010-09-11 110 views
1

軌3新手,使用設計的權威性...Rails 3中,建模問題

我想創建以下型號:

class Instance < ActiveRecord::Base 
has_many :users 
has_many :notes 
end 

class User < ActiveRecord::Base 
belongs_to :instance 
end 

class Note < ActiveRecord::Base 
belongs_to :instance 
end 

要在notes_controller.rb建立新的筆記

def create 
@note = instance.notes.build(params[:note].merge(:instance_id => current_user.instance_id)) 
end 

但我發現了以下錯誤:「未定義的局部變量或方法'實例」爲#」

想法?

回答

0

你還沒有分配任何東西給「實例」,所以沒有什麼可引用的。如果您知道實例記錄已經存在於數據庫中,你可以這樣做:

@instance = current_user.instance 
@note = Note.create(:instace_id => @instance.id) 

如果沒有,你需要檢查並在必要時先創建它,使用同一種語法。

+0

而這屬於控制器的說明,是嗎? – AnApprentice 2010-09-11 17:15:37

+0

@nobosh是的。當您點擊相應的鏈接時,該代碼就會被調用,例如/ notes/create,然後無論您在該控制器方法中聲明的實例變量是否也可以在視圖中訪問。 – bnaul 2010-09-11 17:32:58

+0

謝謝bnaul,真的很感激! – AnApprentice 2010-09-11 20:53:43