0
我在軌道上的紅寶石關係有問題。軌道上的紅寶石關係錯誤
我在兩個表格Professionals
和Users
之間有1:1的關係。所以我用belongs_to
和has_one
。
professional.rb
class Professional < ActiveRecord::Base
attr_accessible :id, :nid
has_one :user
end
user.rb
class User < ActiveRecord::Base
require 'digest/md5'
attr_accessible :email, :first_name, :last_name, :password, :password_confirmation, :professional_id
before_save :encrypt_password
belongs_to :professional
end
我的問題是,當我想以一個行顯示一個,我得到這個錯誤
undefined method `id' for nil:NilClass
<td><%= item.professional.id %></td>
這是我的代碼ex.html.erb
<h2>User Dashboard</h2>
<%= link_to "Log Out", logout_path %><br />
<%= link_to "Create a User", '/register' %>
<%= link_to_function "Back", "history.back()" %>
<hr>
Display all users' information<br />
<%= form_tag users_path, :method => 'get' do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :first_name => nil %>
</p>
<% end %>
<table width="0%" border="0">
<tr>
<th scope="col">ID</th>
<th scope="col">Firstname</th>
<th scope="col">Lastname</th>
<th scope="col">Email</th>
<th scope="col">National ID</th>
</tr>
<% if [email protected]? %>
<% for item in @users %>
<tr>
<td><%= link_to item.id, user_path(item) %></td>
<td><%= item.first_name %></td>
<td><%= item.last_name %></td>
<td><%= item.email %></td>
<td><%= item.professional.id %></td>
</tr>
<% end %>
<% else %>
<% end %>
</table>
我希望你能幫助我。
可能發生這種情況,因爲沒有專業記錄已分配給該特定用戶。首先向用戶添加「Professional」記錄並再次測試。如果這是問題,爲了防止錯誤,你可以這樣做:'<%= item.professional.id if item.professional.present? %>' – Alireza 2014-10-26 20:15:50
這是因爲我的用戶表中有2條記錄中有1條沒有profesisonal_id。問題解決了,謝謝你們! – rfcabal 2014-10-26 20:21:11
太棒了,我會發佈一個答案,如果你感到高興,你可以接受它。 – Alireza 2014-10-26 20:47:27