我想換我的頭周圍Rails和已經進入一些困難,試圖理解爲什麼有些事情的工作和別人不一樣的Rails顯示的HAS_ONE關係表
例如,具有2個表:
類用戶
table users
email:string
password:string
類資料
table profiles
firstname:string
lastname:string
city:string
user_id:integer
現在è ach用戶應該有1個配置文件。
user.rb我
has_one :profile
和profile.rb模塊所以在
belongs_to :user
現在
所有我想要做的是顯示了在表兩張表
<table>
<tr>
<th>User_ID</th>
<th>Email</th>
<th>Password digest</th>
<th>First Name</th>
<th>Last Name</th>
<th>City</th>
</tr>
<% @users.each do |user| %>
<tr>
<td><%= user.id %></td>
<td><%= user.email %></td>
<td><%= user.password %></td>
<td><%= user.profile.firstname %></td>%></td>
<td><%= user.profile.lastname %></td>%></td>
<td><%= user.profile.city %></td>%></td>
</tr>
<% end %>
</table>
我有一個控制器顯示索引頁
def index
#this works
@users = User.all(:include => :profile)
end
這段代碼我找到了工作,它正確顯示錶。
但是我有一個其他代碼的列表,我通過試圖讓它起作用來收集/拼湊出來,這是行不通的。
所以碼的該列表會一直DEF內部索引單獨特林兩個表
連接@users = @ users.build_profile() 拋出錯誤:未定義的方法`build_profile」的零:NilClass
@users = @ users.profile 拋出錯誤:零未定義的方法`輪廓」:NilClass
@users = @ user.collect {|用戶| user.profile} 拋出錯誤:未定義的方法`收集 '的零:NilClass
@users = Profile.find(:所有) 拋出錯誤:未定義的方法`電子郵件' 的#Profile:0x46da5a0
<% @users.each do |user| %> <tr> <td><%= user.id %></td> <td><%= user.email %></td> <td><%= user.password %></td> <td><%= user.proflie.firstname %></td>
@users = @ profile.create_user() 拋出錯誤:未定義的方法`create_user」的零:NilClass
@users = @ users.profiles 拋出錯誤:未定義的方法`型材的零: NilClass
@users = @ user.each {| user |用戶。型材} 拋出錯誤:每個」的零未定義的方法`:NilClass
爲什麼所有這些其他的失敗,他們似乎對於有類似的問題(連接兩個表1到其他用戶的工作零關係)