2014-03-13 36 views
1

@user,0 UserUser.newuser之間的區別是什麼,即user.name@user,User即User.new和user即user.name有什麼區別?

我在我的應用程序中出現問題,我有_user.html.erb:<%= link_to "Edit", [:edit, user] %>和edit.html.erb:<%= form_for(@user) do |f| %>,它出錯說出@user is nil

我不明白爲什麼用戶沒有進入表單?我終於明白,我沒有@user,用戶牢牢把握等

這裏是full code right here

+0

'User'是實際的活動記錄類的'用戶'表。 'User.new'創建一個記錄的新實例(例如,如果你想添加一條新記錄到用戶表)。 '@ user'是你的用戶控制器類的實例變量,它可能已經設置爲分配給用戶活動記錄的一個實例。 'user'看起來像一個局部變量(除了通常的Ruby命名風格之外,沒有Rails約定)。如果你看到'user.name',你需要找出'user'是什麼。我想這是一個設置爲用戶記錄的局部變量,並且有一個名稱字段。 – lurker

+2

閱讀教程。不完全是。即使沒有涉及RoR,也需要理解非常基本的*不同*概念 - 實例變量,類,創建對象,局部變量和方法等。請參見[Ruby標記信息](http://stackoverflow.com/tags/ruby​​/info),以獲得涵蓋這些概念的相關/有用鏈接。 – user2864740

+0

(在這種情況下,簡單地用'user'替換'@ user'應該「修正錯誤」;因爲'user'不能爲零,因爲前面的'user.name'不會失敗..但是沒有真正增加對概念的理解。) – user2864740

回答

2
User #It is a class 

@user #Instance(or object) of 'User' class. 

User.new # creates new instance(or object) of 'User' class. 

user.name # 'name' is the attribute of 'user' object. 
+0

'@ user.name'和'user.name'有什麼區別? – Bruno

+2

@ user.name和user.name都會給你 - 用戶名,差異在'@user'中 - 是一個實例變量,'user' - 是一個局部變量 –

相關問題