2015-02-08 2 views
0

На данный момент у меня есть поклонники, которые могут следовать за художниками. Теперь я хочу отобразить микросоставы Художника Художников, которых придерживается Fan.Создание временной шкалы с использованием петель, рельсов

Я хочу отсортировать микропоста Художника на created_at по мере их создания.

<% @fan.artists.each do |artist| %> 
    <% artist.artist_microposts.sort_by{ |micropost| micropost.created_at }.each do |micropost| %> 
    <%= micropost.content %> 
    <% end %> 
<% end %> 

Это сортировка по created_at, но так как это пробегает по каждому художнику первого, он показывает все microposts, которые принадлежат одному художнику, то отображению всех mircoposts, которые принадлежат к следующему художнику, и так далее.

Я хочу, чтобы это было больше сроки, как Twitter, который отображает microposts в них входят.

ответ

0

Я был в состоянии сделать это путем создания таблицы объединения между fans, artists и artist_microposts. I затем сделал

<% @fan.artist_microposts.sort_by{ |micropost| micropost.id }.each do |micropost| %> 
    <%= micropost.content %> 
<% end %> 

Работал отлично.

0

Это не то, как вы реализуете эту функцию. Если вы хотите обновить временную шкалу по мере поступления новых твитов, вам необходимо прослушать изменения с помощью JQuery. Смотрите это [http://railscasts.com/episodes/229-polling-for-changes][1] Он покажет вам, как реализовать функцию, которую вы ищете.

Подсказка: не сортировать по created_at, это плохая практика, потому что create_at не является индексом и будет медленнее. Вместо этого сортируйте по id, он автоматически увеличивается и индексируется.

artist.artist_microposts.order('id DESC') 
0

я смог решить по первой выборке в художника иды и затем выбирая сообщения, которые были связаны с этими художниками.

irb(main):019:0> fan = Fan.first 
#<Fan id: 1, name: "Tony"> 

irb(main):020:0> ids = fan.artists.pluck(:id) 
#=> [1, 2] 

irb(main):022:0> posts = Post.where(:artist_id => ids).order("created_at DESC") 
#=> #<ActiveRecord::Relation [ 
#<Post id: 3, text: "Third Post", artist_id: 1, created_at: "2015-02-10 12:54:32">, 
#<Post id: 2, text: "Second Post", artist_id: 2, created_at: "2015-02-09 12:53:14">, 
#<Post id: 1, text: "First Post", artist_id: 1, created_at: "2015-02-08 12:52:51"> ]>