2009-08-04 3 views
0

Je suis encore assez nouveau à Rails et besoin de votre aide: J'ai créé une analyse de la forme sociale site (zednine.com) qui a un flux d'activité qui répertorie les entraînements postés sur le site. Plusieurs pages affichent actuellement les 10 dernières séances d'entraînement mises à jour. J'aimerais ajouter un lien au bas de la page "Entraînements plus anciens". Au clic, ceci devrait montrer les 10 prochains entraînements dans la page, immédiatement au-dessous des 10 premiers, avec un nouveau lien vers plus vieux ci-dessous (maintenant 20 affiché dans la page) - juste comme le flux de nouvelles sur Facebook et plusieurs autres réseaux sociaux.Afficher le prochain ensemble de résultats dans la page avec Rails, comme "anciens messages" de style Facebook pour voir la prochaine série de nouvelles

Ce que j'ai essayé jusqu'à présent:

  1. J'utilise actuellement trouver avec: limite pour obtenir le premier N résultats
  2. Je peux mettre en place une trouvaille unique: limite et: OFFSET pour chaque ensemble de N résultats avec divs cachés, mais c'est boiteux et ne s'étend pas bien

J'ai aussi regardé:

  1. Pagin ation, y compris will_paginate, mais ne sait pas si cela peut aider dans le même découpage de pages?
  2. collections ...?

Quel est le bon/un bon moyen de le faire?

En outre, comment puis-je inclure des enregistrements de plusieurs tables dans ce type de flux? Par exemple, la liste pourrait inclure des entraînements d'une table, des entrées de journal d'un autre, des commentaires d'un tiers, tous entremêlés et triés par date?

Merci!

Répondre

0

will_paginate fera le travail, il suffit de passer à la page que vous voulez:

<%= link_to "Older Posts", model_route_path(:page => next_page) %> 

Quant à la deuxième question, créez simplement un modèle feeds (ou le cloue sur un existant). Ensuite, ayez une méthode qui récupère les entrées récentes des différents autres modèles et les trie par date created_at. J'implémenterais probablement la méthode #recent sur chacun des modèles et je l'appellerais dans votre objet Feed.

Models: 

class Feed 
    def index 
    entries = [] 
    entries << Journal.recent 
    entries << Comment.recent 
    # etc 
    entries.sort_by {|entry| entry['created_at']} 
    end 
end 

class Journal < ActiveRecord::Base 
    def recent 
    self.find_all_by_created_at(:limit => 10) 
    end 
end 

Ou quelque chose comme ça. Vous devrez faire très attention à l'évolutivité ici.

+0

Merci! Je rencontre d'autres problèmes pour faire fonctionner will_paginate, mais j'ai posté dans le groupe will_paginate. Être un débutant devient tellement fatigant ...;) L'approche d'alimentation prend tout son sens à l'échelle actuelle. Merci pour le pointeur! –

Questions connexes