Rails: отображение пользовательского микросообщения на другой модели

У меня есть пользовательская модель, которая может публиковать микроблоги, и она отображается на странице показа пользователя, но мне было интересно, как я смогу показать созданные пользователем микроблоги на модели, к которой принадлежит пользователь, например, в данном случае в школе. Пользователи принадлежат к определенным школам, и у школ есть много пользователей под ними. Вся помощь очень ценится!

Страница показа пользователя

<div id="MicropostBody">
 <div>
 <% if @user.microposts.any? %>
    <table class="microposts">
      <%= render @microposts %>
    </table>
    <%= will_paginate @microposts %>
 <% end %>
 </div>
</div>

Школа Показать страницу То же самое?

<div id="MicropostBody">
 <div>
 <% if @user.microposts.any? %>
    <table class="microposts">
      <%= render @microposts %>
    </table>
    <%= will_paginate @microposts %>
 <% end %>
 </div>
</div>

Пользовательский контроллер

def show
  @user = User.find(params[:id])
  @school = School.find(params[:id])
  @micropost = Micropost.new
  @microposts = @user.microposts.paginate(page: params[:page])
end

Школьный контроллер То же самое??

def show
  @user = User.find(params[:id])
  @school = School.find(params[:id])
  @micropost = Micropost.new
  @microposts = @user.microposts.paginate(page: params[:page])
end

New School Controller

def show
  @school = School.find(params[:id])
  @user = User.new
  @micropost = Micropost.new
  @microposts = @school.microposts.paginate(page: params[:page])
  @micropost = current_school.microposts.build
end

1 ответ

Решение

Перед тем, как читать дальше, загляните в раздел partials учебного пособия по Rails, если вы все еще испытываете трудности.

users/_microposts.html.erb

<div id="MicropostBody">
  <div>
    <% if microposts.any? %>
      <table class="microposts">
        <%= render microposts %>
      </table>
      <%= will_paginate microposts %>
    <% end %>
  </div>
</div>

Тогда в обоих представлениях вы можете использовать:

<%= render 'users/microposts', :microposts => @microposts %>

Другие вопросы по тегам