2010-07-02 6 views
0

Bonjour, tous mes codeurs! J'ai un problème ohh chok! ..: P Maintenant, mon problème que je suis en train de faire un design pour un site plus grand, ça va bien. Jusqu'à ce que je devrais faire le curseur de contenu/nouvelles. Il devrait prendre des données de plusieurs tables et revenir à l'application.html.erb.Rails - Mise en page d'application avec SQL?

Il est donc nécessaire de prendre en compte les avis et les annonces les plus récentes et de les commander après la dernière création. et puis donnez-moi dans l'application.html.erb .. (Rails 3.0.0.beta4)

J'espère que vous les gars me comprend.

+1

Pouvez-vous reformuler la question (ou être plus précis)? Merci d'avance. –

+0

c'est assez difficile à expliquer, et surtout quand je suis si mal à l'anglais que je suis. Mais je vais essayer. J'utilise nifty: layout pour la partie mise en page, j'ai donc créé un fichier application.html.erb personnalisé, en ce sens que j'ai un curseur vers le contenu où il diffuse des nouvelles, des critiques et des trucs comme ça. De plusieurs tables. Donc, ma question est de savoir comment extraire les données de mes tables (voir: les tableaux (il y en a quelques unes)) et ensuite sortir les données. comme avec les messages dans @posts = Posts.find (..), vous obtenez le point? –

Répondre

1

Prenez le dernier 5 pour tous les modèles, puis mettez tous les enregistrements sur un tableau, triez le tableau et prenez les 5 premiers éléments.

# consider moving .order('date desc').limit(5) to a named scope or a module 
announcements = Announcement.order('date desc').limit(5) 
posts = Post.order('date desc').limit(5) 
monkeys = Monkey.order('date desc').limit(5) 
# .. add others here 

elements = (announcements + posts + monkeys).sort_by(&:date).reverse[1..5] 

La elements variables aura le 5, si elles existent.

Remarque: Je suppose que tous vos modèles ont une méthode appelée "date". Vous pouvez le changer en date_created ou autre chose.

Vous pouvez mettre ce code à plusieurs endroits, mais je pense que le meilleur serait un contrôleur "home", créé spécifiquement pour le rendu de la page d'accueil. Les éléments seraient calculés sur son action de show.

+0

Salut merci, mais vous ne m'avez pas donné de réponse sur ma dernière partie de la question, à propos de l'endroit où le mettre? Quel contrôleur. Et non, je n'ai pas de méthode de date? –

+0

sûr - un contrôleur à la maison est votre meilleur pari à mon humble avis. Mise à jour ma réponse – kikito

0

ne sais pas s'il est plus performant d'utiliser cette syntaxe, au lieu de celui de egarcia:

elements = (announcements | posts | monkeys).sort_by(&:date).reverse[1..5] 

si vous devez utiliser ce code dans plusieurs pages (par exemple dans les barres latérales), le Le meilleur moyen pourrait être d'écrire une aide (par exemple: last_items)