Отображение вложенных лесов в индексе - PullRequest
0 голосов
/ 30 апреля 2011

Я пытаюсь отобразить что-то подобное на 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 / etc

Так как он использует индексный файл, в URL нет: post_id, и он выдает нулевую ошибку. Модели используют соответствующие have_many и own_to.

Вот часть маршрутов. 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>

Спасибо!

1 Ответ

1 голос
/ 01 мая 2011

Ну, так как комментарии принадлежат к данному посту, вам просто нужно иметь отдельный цикл в представлении, чтобы перебирать каждый из комментариев для данного поста.

Так что удалите переменную @comments из своегоКонтроллер и индексное представление, и вместо этого сделайте это в индексном представлении, где у вас в данный момент есть @comments:

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

Я сделал имя пользователя и текстовые атрибуты, конечно, вы будете использовать все, что есть в вашей модели комментариев.

Ян.

...