当用户属于某个模型时,如何调用该用户的名称

时间:2016-07-26 15:41:16

标签: ruby-on-rails erb

我有两个模型,Chasing和User,追逐belongs_to:用户和用户has_many:chasings。

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

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

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

<%= 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来为我提供与追逐相关联的用户的名称。我想在索引视图中显示此名称,我目前的代码是:

ChasingsController:

def index
  @chasing = Chasing.all
end

索引视图:

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

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

有没有办法可以为我的观点调用名称?

编辑:

根据NickM在下面的评论,我没有分配给他们的用户,导致活动记录丢失错误。

1 个答案:

答案 0 :(得分:1)

您的数据库中看起来有一些没有user_ids的Chasing个对象。您可以执行<%= chasing.user.name if chasing.user %>

进行测试