0

我有一个应用程序,其中每个用户都有一个密钥持有者,允许他们访问他们的帐户。这些是单独的模型。我已经在模型中建立了一对一的关系,但是当我尝试在视图中使用它时,我得到了 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
4

1 回答 1

0

我尽一切努力检查可能出现的错误 - 例如检查密钥持有者的 user_id 和用户的 keyholder_id 是否都是整数等。

如果有人正在阅读本文并希望代码这样做,它是:

@model.column_for_attribute('column_name').type

我最终没有设法解决这个问题 - 幸运的是我刚刚开始使用这个应用程序,所以重新开始并在将设计添加到它们之前为两个模型搭建了脚手架,现在它在完成其他所有操作后工作正常。

于 2013-08-02T09:39:31.687 回答