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 %>