Comme les chronologies YouTube et Facebook, nous avons maintenant besoin de la possibilité d'afficher les publications et les publicités sur le même écran dans l'ordre décroissant (généralement, les publicités peuvent ne pas être dans l'ordre de création, mais pour plus de simplicité (En supposant qu'ils sont disposés dans l'ordre de la création).
Envisagez une méthode d'acquisition du modèle de publication (Post) et du modèle de publicité (Publicité) avec le contrôleur et de les traiter en parallèle dans la vue.
#Le modèle d'affichage et le modèle publicitaire ont des colonnes différentes
#Modèle de poste (poste)
t.integer "user_id"
t.string "content"
t.string "image"
t.datetime "created_at"
t.datetime "updated_at"
#Modèle publicitaire (publicité)
t.integer "company_id"
t.string "content"
t.string "link_url"
t.datetime "expired_date"
t.datetime "created_at"
t.datetime "updated_at"
timeline_controller.rb
def index
posts = Post.all
ads = Advertisement.all
#Transformez chaque instance multiple en un seul tableau
@instances = posts | ads
#Trier par ordre décroissant de création
@instances.sort!{ |a, b| b.created_at <=> a.created_at }
end
erb:index.html.erb
<% @instances.each do |instance| %>
<% if instance.class == "Post" %>
<%#Affichage du message%>
<%= instance.user_id %>
<%= instance.content %>
<%= instance.image %>
<% else %>
<%#Afficher la publicité%>
<%= instance.company_id %>
<%= instance.content %>
<%= instance.link_url %>
<% end %>
<% end %>
Recommended Posts