Wie bei den Zeitplänen für YouTube und Facebook mussten wir die Möglichkeit haben, Beiträge und Anzeigen in absteigender Reihenfolge auf demselben Bildschirm anzuzeigen (normalerweise sind Anzeigen möglicherweise nicht in der Reihenfolge ihrer Erstellung, sondern um die Dinge einfach zu halten. (Vorausgesetzt, sie sind in der Reihenfolge der Schöpfung angeordnet).
Lassen Sie uns darüber nachdenken, wie Sie das Post-Modell (Post) und das Werbemodell (Advertisement) mit dem Controller gut verbinden und sie in der Ansicht parallel verarbeiten können.
#Buchungsmodell und Werbemodell haben unterschiedliche Spalten
#Postmodell (Post)
t.integer "user_id"
t.string "content"
t.string "image"
t.datetime "created_at"
t.datetime "updated_at"
#Werbemodell (Werbung)
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
#Machen Sie jede mehrere Instanzen zu einem Array
@instances = posts | ads
#Sortieren Sie in absteigender Reihenfolge der Erstellung
@instances.sort!{ |a, b| b.created_at <=> a.created_at }
end
erb:index.html.erb
<% @instances.each do |instance| %>
<% if instance.class == "Post" %>
<%#Post-Anzeige%>
<%= instance.user_id %>
<%= instance.content %>
<%= instance.image %>
<% else %>
<%#Anzeige anzeigen%>
<%= instance.company_id %>
<%= instance.content %>
<%= instance.link_url %>
<% end %>
<% end %>
Recommended Posts