2016-11-02 1 views
0

J'ai une méthode pour obtenir le résultat de la recherche et afficher et cela fonctionne correctement. Mais, chaque fois que j'essaie d'aller à la deuxième page, il est dit erreur concernant aucun contenu.La pagination Rails ne charge pas le contenu de la deuxième page pour les résultats de recherche

Voici mon code de contrôleur:

class BuyersController < UsersController 

def show 
end 

def search 
end 

def search_products 
    search_name = params[:search][:name] 
    search_category = params[:search][:category_id].to_i 
    search_location_id = params[:search][:location_id].to_i 
    search_highest_bid = params[:search][:highest_bid].to_f 
    @matching_products = ProductsUnderBid.search_products_under_bid(name: search_name, category_id: search_category, 
                    location_id: search_location_id, highest_bid: search_highest_bid) 
    @matching_products = @matching_products.paginate(page: params[:page], per_page: 1) 
end 
end 
+0

Avez-vous des dossiers assez? Essayez un enregistrement par page et voir comment il va – Milind

+0

J'ai deux dossiers et je suis en train avec un enregistrement par page. Erreur: BuyersController # show ne contient pas de modèle pour ce format et cette variante de requête. request.formats: ["text/html"] request.variant: [] REMARQUE! Pour les requêtes XHR/Ajax ou API, cette action répond normalement avec 204 No Content: un écran blanc vide. Puisque vous le chargez dans un navigateur Web, nous supposons que vous vous attendez à ce que le rendu d'un modèle soit réel, pas ... rien, donc nous montrons une erreur pour être extra-clair. Si vous prévoyez 204 Pas de contenu, continuez. C'est ce que vous obtiendrez à partir d'une requête XHR ou API. Donner un coup de feu. –

Répondre

0

J'ai changé les méthodes comme ci-dessous et ça a marché! Comme vous pouvez le voir, je ai cahnged les types de variables à la méthode globale dans search_products afin que je puisse y accéder à partir de la méthode show.I a également dû ajouter show.html.erb sous le dossier in app/view/controller_name /. J'espère que ça aide les autres.

def show 
    @matching_products = ProductsUnderBid.search_products_under_bid(name: $search_name, category_id: $search_category, 
                      location_id: $search_location_id, highest_bid: $search_highest_bid) 
    @matching_products = @matching_products.paginate(:page => params[:page],:per_page => 5) 
      get_already_placed_bids(@matching_products) 
end 

def search_products 
    $search_name = params[:search][:name] 
    $search_category = params[:search][:category_id].to_i 
    $search_location_id = params[:search][:location_id].to_i 
    $search_highest_bid = params[:search][:highest_bid].to_f 
    @matching_products = ProductsUnderBid.search_products_under_bid(name: $search_name, category_id: $search_category, 
                    location_id: $search_location_id, highest_bid: $search_highest_bid) 
    @matching_products = @matching_products.paginate(:page => params[:page],:per_page => 5) 
    get_already_placed_bids(@matching_products) 
end 
0

Essayez de le faire supprimer le per_page: 1 de sorte que vous devrez mettre le code comme ceci:

@matching_products = @matching_products.paginate(page: params[:page]) 
+0

Mais, ça enlève la pagination !!! –