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

作成者の名前を返します、完璧です。しかし、これをビューに入れようとすると、未定義のメソッド'name'が返されます。

私が行った正しいことの最も近いものは、私のチャレンジの関連部分を、creator_idではなくcreatorと言うインデックスビューにすることだと思います。

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

しかし、私が望むビューで作成者名を返す代わりに、次の出力を返します。

#<User:0x007fe1b81c20b8> 

フィールドがこのように表示される理由と、ビューにユーザーの名前を出力する方法を教えてください。

MyChallengesコントローラーのインデックスアクションは次のとおりです。

@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 に答える