我有一个应用程序,每个用户都有一个密钥持有者,可以访问他们的帐户。这些是单独的模型。我在模型中建立了一对一的关系,但是当我尝试在视图中使用它时,我得到nil:NilClass的'undefined method'id'的错误。我以前曾经多次使用过关系并且遍历过它们,但是我不明白为什么会这样,所以请有人解释一下吗?
我做的唯一与正常情况不同的是使用Devise来生成密钥持有者模型,而不是像往常一样使用脚手架。
谢谢!
user.rb:
has_one :keyholder
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
答案 0 :(得分:0)
我尝试了一切来检查错误的位置 - 例如检查keyholder的user_id和用户的keyholder_id都是整数等。
如果有人正在阅读此内容并希望代码这样做,那就是:
@model.column_for_attribute('column_name').type
我最终无法解决这个问题 - 幸运的是我刚开始使用这个应用程序,所以再次启动并在添加Devise之前将两个模型搭建到,它现在可以正常工作了完成了其他一切。