2011-08-01 14 views
0

私のレールアプリのポスターの情報とともにポストを表示したい。今は、 "ショー"ページ(1つの投稿のページ)に投稿とユーザーの関連付けを表示できますが、 "インデックス"ページ(すべての投稿が表示されます)に表示する場合は、 nilのための未定義のメソッド `ユーザ名」:私はこのエラーを取得NilClassを私は『ショー』(それは私がポスターの情報を表示することができ、私はいけないの下で私のpost_controllerに@ post.user = CURRENT_USERを追加「インデックス」のポスト+ポスターの情報を表示

。 "DEFインデックス" に追加するには知っている。これは私が持っているものである

:。

def index 
    @posts = Post.all 
    respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @posts } 
    end 
    end 

これは私がポスターの情報を表示することができるように私のデフインデックスに追加するかを知りたい

def show 
    @post = Post.find(params[:id]) 
    @post.user = current_user 
    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @post } 
    end 
    end 

「ショー」の下で、私が持っているものです。前もって感謝します。

+0

から、おそらく(ラインを表示することができます使用後

<% @posts.each do |post| %> <!-- This is already in your index action. --> <%=post.user.name unless post.user.blank?%><!-- This is the code you need --> <!-- You might want to add a new th in the header for the css table then you can add a <td></td> tags round the above line so your table all matches up nicely for display purposes--> <%end%> <!-- This is already in your index action --> 

希望のインデックスアクションでユーザーを表示するには

<%= @post.user.name unless @product.user.blank? %> 

を使用するショービューにユーザー名を表示するには、あなたのビュー)にエラーメッセージが指している。 – Gareth

答えて

2

設定が間違っています。投稿を作成して更新するときに、投稿に追加する必要があります。 これまでのように、すべての投稿は、showアクションでcurrent_userを投稿に割り当てているため、現在投稿を表示しているユーザーに属します(これを続行した場合は、ポスト1は、ユーザ1によって見た場合、ポスト1は、それが2

溶液ユーザに属することになるユーザ2によって示されている場合、それはユーザ1に属するものとして示すであろうことを意味するアプローチは)への現在のユーザーを割り当てることです更新を投稿して、投稿アクションのように投稿が物理的に更新または作成される前に投稿コントローラの動作を正確に作成します。

次にshowアクションからの@ post.user = CURRENT_USERを削除します。 これは、ユーザーが割り当てられていないレガシーデータがアプリに残っている可能性があります。しかしそれはo.kです。編集して各投稿を保存すれば、自動的に添付されます。

次に、views/posts/index_html.erbで、表示/編集リンクの前に新しいテーブル行の列に表示するユーザーの詳細を追加します。これは、標準のscaffolded index.html.erbファイルがあることを前提としています。あなたが標準のインデックスビューを持っていない場合はどこにでも置くことができますが、カスタマイズされたインデックスビューを持っていれば、おそらく最初にこの質問をしていないので、それを忘れて、

更新

を行く私は上記の私の応答ビューでユーザーを表示する方法を説明しなかったが、おそらく私はあなたのコードを紹介しますので、少し明確にする必要があります。 は

+0

こんにちは。 \t @post:私は がデフ @post = Post.new([ポスト]のparams)を作成しています。私は私に "@のpost.save" を追加post.user = CURRENT_USER ショー@ \t :ユーザー= post.save @ CURRENT_USER はデフ @post = Post.find([ID]のparams)を更新しますdef更新? nilのための 未定義のメソッド 'ユーザ名」:NilClass 私は右の理由デンインデックスに追加するかを知らない私が取る場合 また、「@ post.user = CURRENT_USER 」DEFから、私はこのエラーを取得し表示し今私は同じ未定義のメソッドエラーを取得します。 – ChrisBedoya

+0

ちょうどあなたが意味することに気づいた。私が別のアカウントでサインインした場合、そのアカウントは "投稿投稿者"の下に表示されます。 – ChrisBedoya

+0

Chris。インデックスアクションまたは表示アクションには何も追加しません。 indexアクションとshowアクションの両方で、ユーザー割り当てを削除する必要があります。私は私の答えを更新するビューコードを表示 – jamesc

関連する問題