0
votes

Afficher les enregistrements appartenant à cet utilisateur Ruby sur rails

J'ai le code suivant xxx

users_controller.rb xxx

toutes mes données provient d'une API externe.

où je passe à travers chaque album , 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.

Un album a un userid.


4 commentaires

@Albums = album.where (utilisateur: utilisateur.current) ( user.current 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


@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


3 Réponses :


0
votes

sur l'action de votre contrôleur responsable de la montrant de cette page, vous devez faire quelque chose comme xxx

de sorte que lorsque vous appelez @Albums à votre vue, il ne contiendra que des documents préchargés dans le contrôleur .

ou, si vous utilisez quelque chose comme CANCAN pour gérer les autorisations, Vous devriez être capable de faire quelque chose comme ça: xxx

de sorte que vous donniez lire autorisations à l'utilisateur pour voir uniquement des albums qui lui appartiennent .


1 commentaires

J'ai ajouté le code du contrôleur à la question, mais je vais essayer votre solution.



1
votes

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


3 commentaires

Oh OK, c'est assez simple, de la dépassement, de la dépassement. La pagination semble rompre, cependant, méthode non définie total_pages 'for []: tableau`


Essayez de déplacer .Sélectionnez une ligne.


Quel . PAGINATE GEM Utilisez-vous - Les typiques sont les kaminari et will_paginate . 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



0
votes

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.


0 commentaires