0

このようなものをposts/index.html.erbに表示しようとしています

Post #1
  Comment #1 for Post #1
  Comment #2

Post #2
  Comment #1 for Post #2

etc.

/ posts / 1 / comments /、/ posts / 2 /comments/などに移動すると問題なく動作します

インデックスファイルを使用しているため、URLに:post_idがなく、nilエラーがスローされます。モデルは適切なhave_manyとbelongs_toを使用します。

これがroutes.rbの一部です

resources :posts do
  resources :comments
end

resources :posts

これが私のposts_controller.rbの一部です

def index
@posts = Post.all
@comments = params[:post_id][:desc]

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

これがindex.html.erbの一部です

<% @posts.each do |post| %>
  <tr>
    <td><%= post.title %></td>
    <td><%= link_to 'Show', post %></td>
    <td><%= link_to 'Edit', edit_post_path(post) %></td>
    <td><%= link_to 'Destroy', post, :confirm => 'Are you sure?', :method => :delete %></td>
  </tr>
<tr><td><%= @comments %></td></tr>
<% end %>
</table>

ありがとう!

4

1 に答える 1

1

コメントは特定の投稿に属しているため、特定の投稿の各コメントを反復処理するには、ビューに個別のループを設定する必要があります。

したがって、コントローラーとインデックスビューから@comments変数を取り出し、現在@commentsがある場所の代わりにインデックスビューでこれを行います。

<% for comment in post.comments %>
  <tr><td><%= comment.user_name %><%= comment.text %></td></tr>
<% end %>

もちろん、コメントモデルにあるものは何でも使用するようにuser_nameとtextattrsを作成しました。

ian。

于 2011-05-01T01:33:52.117 に答える