当用户属于某个模型时,如何称呼他们的名字

How do I call the name of a user when they belong to a model

我有两个模型,Chasing 和 User,一个 chasing belongs_to :user 和一个 user has_many :chasings.

我创建了一个将两个模型链接在一起的迁移:

class AddUsersToChasings < ActiveRecord::Migration
  def change
    add_reference :chasings, :user, index: true, foreign_key: true
  end
end

我有一个用于创建新用户的控制器,然后我希望能够将其分配给追逐。我目前在我的追逐表单中有这段代码用于选择用户:

<%= f.select :user_id, options_for_select(User.all.map {|c| [c.name, c.id]}), { :include_blank => "Please select user"}, {:class => "form-control"} %> 

这似乎可以解决问题,在 rails 控制台中调用 Chasing.first 后,我可以看到追逐现在与我选择的用户相关 user_id。我也可以 运行 Chasing.first.user.name 给我与追踪相关的用户的名字。我想在我的索引视图中显示这个名字,我目前拥有的代码是:

追逐控制器:

def index
  @chasing = Chasing.all
end

索引视图:

<% @chasing.each do |chasing| %>
  <%= chasing.user %>
<% end %>

这显示了一个随机字符串(每次我更新追逐时似乎都会改变 - 例如 #<User:0xf5b0ba8>)。当我将其更改为 chasing.user.name 时,我得到 'undefined method `name' for nil:NilClass'

有没有办法为我的视图命名?

编辑:

根据下面 NickM 的评论,我在没有分配用户的情况下进行了追踪,导致活动记录抛出错误。

您的数据库中似乎有一些 Chasing 个对象,但没有 user_ids。您可以通过 <%= chasing.user.name if chasing.user %>

进行测试