2017-01-20 2 views
0

Mon contrôleur:Comment puis-je itérer sur un tableau, l'utiliser dans ma vue et supprimer chaque valeur pour qu'il appelle une requête API Get lorsque le tableau est vide?

class ProductsController < ApplicationController 
    def show 
    @request = ClassName.search("kayak") 
    @products = @request.paginate(params[:page], 30) 
    end 
end 

Je ne suis pas stocker quoi que ce soit dans ActiveRecord.

Mon affichage parcourt @products, qui est un tableau de OpenStructs.

Mon problème est que tout s'affiche correctement, mais chaque demande renvoie un nombre de produits plafonné. Je suis complètement perdu à ce point sur comment et où je devrais appeler la nouvelle demande & ajouter les produits nouvellement trouvés à @products afin qu'ils puissent être utilisés à mon avis avec

<%= will_paginate @products %> 

-à-dire; Appelez la commande -> populate @products -> show @products dans la vue & paginez-les, -> lorsque tous les @products sont affichés, appelez une autre requête et remplissez @products tout en continuant à les paginer.

+0

Ce que vous cherchez est "scroll infini". Vous pouvez vous référer ici https://www.sitepoint.com/infinite-scrolling-rails-basics/ –

+0

Ce n'est pas exactement ce dont j'ai besoin, désolé, mais il est utile à certains égards. En appelant la demande, disons que je ne peux recevoir que 10 produits à la fois et que je veux paginer 5 à la fois par page, je les affecterai aux produits, les parcourirai dans la vue, et après le dernier produit j'ai besoin d'un façon d'appeler à nouveau la demande et de les ajouter aux produits, de sorte que maintenant les 10 produits suivants seront paginés comme "page 3, page 4" et la prochaine requête sera "page 5, page 6" et ainsi de suite. – Xarbust

+0

Pas de soucis, mais je ne comprends toujours pas. Avez-vous un exemple de ce que vous essayez d'accomplir? –

Répondre

0

Regardez ici https://github.com/kaminari/kaminari/wiki/How-To:-Create-Infinite-Scrolling-with-jQuery. La mise en œuvre est très simple avec kaminari gem.

+0

Cela serait très utile, mais je n'utilise pas ActiveRecord car je n'ai pas de base de données ni besoin de stocker des éléments. Toutes mes informations proviennent d'une API. L'API définit une limite au nombre de produits pouvant être renvoyés avec chaque requête avant d'avoir à envoyer une autre requête. Comment j'accomplirais ceci avec/sans défilement infini? – Xarbust