Rails,在视图中显示模型名称,而不是id

问题描述 投票:0回答:1

非常感谢您的帮助。

我有以下关系:

class User < ActiveRecord::Base
  has_many :ideas, :class_name => 'Challenge', :foreign_key => 'creator_id'
  has_many :contributions, :class_name => 'Challenge', :foreign_key => 'contributor_id'

class Challenge < ActiveRecord::Base
  belongs_to :creator, :class_name => 'User'
  belongs_to :contributor, :class_name => 'User'

我的问题是,能够在质询模型的视图中显示用户的姓名,而不是用户的ID。

在控制台中,我可以向@challenge分配一个挑战,然后输入

@challenge.creator.name

返回创建者的名字,完美。但是,当我尝试将其放入我的视图时,它将返回未定义的方法“名称”。

我认为最接近正确的做法是使我的挑战索引视图的相关部分说是创建者,而不是creator_id:

<tr><% @challenges.each do |challenge| %><tr>
<td><%= challenge.creator %></td>

但不是返回我想要的视图中的创建者名称,而是返回以下输出:

#<User:0x007fe1b81c20b8> 

任何人都可以解释为什么这样显示字段以及如何在我的视图中输出用户名。

我的挑战控制器索引操作只是:

@challenges = Challenge.all
ruby-on-rails view associations
1个回答
0
投票

我想它一定是在显示对象本身。 Challenge.creator是对象,而不是创建者的名称。

替换

<td><%= challenge.creator %></td>

使用

<td><%= challenge.creator.try :name %></td>
© www.soinside.com 2019 - 2024. All rights reserved.