我有两个模型,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在下面的评论,我没有分配给他们的用户,导致活动记录丢失错误。
答案 0 :(得分:1)
您的数据库中看起来有一些没有user_ids的Chasing
个对象。您可以执行<%= chasing.user.name if chasing.user %>