J'ai le code suivant users_controller.rb p> toutes mes données provient d'une API externe. p> où je passe à travers Un album a un userid. p> p> chaque album code>, je n'ai besoin que d'afficher uniquement les albums appartenant à cet utilisateur, car actuellement, je suis en boucle à travers tous les albums, que ce soit, qu'ils appartiennent à cet utilisateur ou pas. p>
3 Réponses :
sur l'action de votre contrôleur responsable de la montrant de cette page, vous devez faire quelque chose comme de sorte que lorsque vous appelez @Albums à votre vue, il ne contiendra que des documents préchargés dans le contrôleur . p> ou, si vous utilisez quelque chose comme CANCAN pour gérer les autorisations, Vous devriez être capable de faire quelque chose comme ça: p> de sorte que vous donniez
J'ai ajouté le code du contrôleur à la question, mais je vais essayer votre solution.
Utilisez .Ceect à, um, eh bien, Sélectionnez em> Seuls ces albums où l'album 'UTILISIDID' '' 'UTILISH' ' code> correspond à @user [' ID '] code>: class UsersController < ApplicationController
def show
@user = HTTParty.get('https://jsonplaceholder.typicode.com/users/' + params[:id], :headers => {'Content-Type' => 'application/json'})
@albums = HTTParty
.get(
'https://jsonplaceholder.typicode.com/albums',
:headers => {'Content-Type' => 'application/json'}
)
.select{|a| a['userId'] == @user['id']}
.paginate(:page => params[:page], :per_page => 6)
end
end
Oh OK, c'est assez simple, de la dépassement, de la dépassement. La pagination semble rompre, cependant, méthode non définie code> total_pages 'for []: tableau`
Essayez de déplacer .Sélectionnez code> une ligne.
Quel . PAGINATE CODE> GEM Utilisez-vous - Les typiques sont les kaminari code> et will_paginate code>. De manière générale, ce que vous essayez de ne pas échoue, car le paginate est en fait un objet de relation actif, et la pagination est donc transmise en tant que restriction de requête à l'appel SQL actif sous-jacent
L'API de l'autre personne devrait faire la pagination pour vous. Il ne sera presque certainement pas à l'échelle de la façon dont vous essayez de le faire. p>
@Albums = album.where (utilisateur: utilisateur.current) code> (user.current code> ou tout ce que vous faites pour trouver l'utilisateur qui est actuellement connecté) dans votre contrôleur au lieu de < code> @Albums = album.all code>@Viktor - Malheureusement, ce que l'OP n'a pas affiché, c'est qu'ils travaillent avec des tableaux reçus des API externes, pas des objets Activerecord.
J'ai raté le code du contrôleur, a ajouté @viktor
@jvillian ^^ s'il vous plaît voir ci-dessus