2016-06-01 6 views
3

Ein Benutzer has_many Kartoffeln. Kartoffeln gehören zu einem Benutzer. Eine Kartoffel hat viele Macken. Quirks gehören zu Kartoffeln.Paginieren Sie viele has_many gehört zu Beziehungen in Rails mit will_paginate

Ich möchte meine Kartoffeln und die damit verbundenen Macken zusammen in meiner Benutzer anzeigen und Paginate mit dem Juwel wille_paginate wie unten angezeigt.

potato_names -> sweet potato russet potato mystery potato 
quirk_name -> shiny   rough   purple 
quirk_name -> big    brown   orange 
quirk_name -> old    medium   blue 

Meine Benutzer-Controller vorge Paginierung

UsersController 

    def show 
    @user = User.find(params[:id]) 
    @potatoes = @user.potatoes 
    @quirks = Quirk.where(potato: @potatoes) 
    end 

ich Kartoffeln durch eine Änderung der Userscontroller Paginieren kann -

@potatoes = @user.potatoes.paginate(page: params[:page]) 

und Benutzer - show.html.erb

<%= @potatoes.potato_name %> 
<%= will_paginate @potatoes %> 

aber wie kann ich g und quickt, um mit den Kartoffeln zu paginieren, so dass, wenn ich weiter klicke, ich die Kartoffeln und Macken bekomme, die mit dem folgenden Satz verbunden sind? Anfangs bekam ich Kartoffeln zu paginieren und Macken, nur um sich zu zeigen, weshalb ich Macken vorher nicht gezeigt habe. Ich verstand den .pagination Anruf nicht gut genug.

Ich kann aufrufen: param_name, um den Parameternamen für die Seitenzahl anzugeben, und stellen Sie sicher, dass es ordnungsgemäß funktioniert.

will_paginate documentation

kann ich

tun
UsersController 
    def show 
    @user = User.find(params[:id]) 
    @potatoes = @user.potatoes.paginate(page: params[:potatoes_page]) 
    @quirks = Quirk.where(potato: @potatoes).paginate(page: params[:quirks_page]) 
    end 

show.html.erb

<%= render @potatoes %> 
<%= render @quirks %> 

<%= will_paginate @potatoes, :params_name => 'potatoes_page' %> 
<%= will_paginate @quirks, :params_name => 'quirks_page' %> 

_potato.html.erb

<%= potato.potato_name %> 

_quirk.html.erb

Das sollte mir Kartoffeln und Macken separat Paging geben ... Aber wenn ich Kartoffeln, Kartoffeln paging und Macken ist verschwinden. Wenn ich auf der nächsten Seite die Seite quirle, bleiben die Kartoffeln gleich und nur die Macken ändern sich.

Ich glaube, dass der oben genannte Fehler liegt, weil ich in der Kartoffeln-Abfrage Paginierung aufrufen, und dann die Kartoffeln Abfrage verwenden, um die Paginierung erneut aufzurufen.

+0

Bitte beschreiben Sie, was passiert, wenn Sie die Macken auflisten und was stattdessen passieren soll. – Raffael

+0

Ich fügte hinzu, was ich getan habe, und ich bearbeite es, während ich einer Lösung näher komme. – whatsinahat

Antwort

0

Das sollte allgemeine Aussehen sein:

UsersController 
    def show 
    @user = User.find(params[:id]) 
    @potatoes = @user.potatoes.paginate(page: params[:page]) 
    @quirks = Quirk.where(potato: @user.potatoes).paginate(page: params[:page]) 
    end 

show.html.erb

<%= render @potatoes %> 
<%= render @quirks %> 

<%= will_paginate @potatoes, :params_name => 'page' %> 

_potato.html.erb

<%= potato.potato_name %> 

_quirk.html.erb

<%= quirk.quirk_name %> 

Der Fehler bestand darin, Seitenumbrüche mit @potatoes und @quirks im UsersController aufzurufen.Außerdem habe ich geändert: params_name zurück auf die Standardseite, so dass beide Modelle zur gleichen Zeit ändern würden. Um sie separat zu ändern, verwenden Sie potatoes_page und quirks_page wie in der Frage gezeigt. Ich entfernte auch

<%= will_paginate @quirks %> 

, weil ich zwei nächste Bars bekam. Wenn Sie @potatoes und @quirks separat ändern, müssen Sie sie hinzufügen.

Verwandte Themen