0

我真的很感激这方面的一些帮助。

我有以下关系:

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
4

1 回答 1

0

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

代替

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

<td><%= challenge.creator.try :name %></td>
于 2012-10-21T10:40:18.507 回答