Rails: Создание микропоста -шоу пользователя на другой модели
-
25-10-2019 - |
Вопрос
У меня есть пользовательская модель, которая может публиковать микроблогы, и она отображается на странице Пользовательского шоу, но мне было интересно, как я смогу показать, что пользовательские микроблогги на модели, к которому принадлежит пользователь, в этом случае в школе. Пользователи принадлежат к конкретным школам, а в школах есть много пользователей. Все помогает очень ценить!
Пользовательская страница
<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
Новый школьный контроллер
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
Решение
Посмотрите на частичные Раздел учебной книги 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 %>