我有一个应用程序,其中每个用户都有一个密钥持有者,允许他们访问他们的帐户。这些是单独的模型。我已经在模型中建立了一对一的关系,但是当我尝试在视图中使用它时,我得到了 nil:NilClass 的“未定义方法 'id”的错误。我以前多次使用关系并遍历它们,但我不明白为什么会这样,所以请有人解释一下吗?
我所做的与平常不同的唯一一件事是使用 Devise 来生成密钥持有者模型,而不是像往常那样搭建它。
谢谢!
用户.rb:
has_one :keyholder
钥匙持有人.rb:
belongs_to :user, dependent: :destroy
而且这些观点都不起作用:keyholders/index.html.erb
<% @keyholders.each do |keyholder| %>
<tr>
<td><%= keyholder.id %></td>
<td><%= keyholder.username %></td>
<td><%= keyholder.user.id %></td>
<td><%= link_to 'Show', keyholder %></td>
<td><%= link_to 'Edit', edit_keyholder_path(keyholder) %></td>
<td><%= link_to 'Destroy', keyholder, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
或 keyholder/show.html.erb
<p>
<strong>ID:</strong>
<%= @keyholder.id %>
</p>
<p>
<strong>Username:</strong>
<%= @keyholder.username %>
</p>
<p>
<strong>Keyholder for:</strong>
<%= @keyholder.user.first_name %> <%= @keyholder.user.last_name %>
</p>
<p>
<strong>User ID:</strong>
<%= @keyholder.user.id %>
</p>
控制器代码:
def index
@keyholders = Keyholder.all
end
def show
@keyholder = Keyholder.find(params[:id])
end