2009-01-28 5 views
0

J'utilise le plugin make_resourceful dans mon application Rails, et j'essaie d'utiliser des ressources imbriquées.Rails - make_resourceful avec des ressources imbriquées

Mon code de contrôleur ressemble à ceci:

class ClientRegionsController < ApplicationController 
    make_resourceful do 
    actions :all 
    belongs_to :client 

    response_for(:create) do |format| 
     format.html { redirect_to client_client_regions_path } 
    end 

    response_for(:update) do |format| 
     format.html { redirect_to client_client_regions_path } 
    end 
    end 

    private 

    def current_objects 
    @current_objects ||= ClientRegion.paginate(:page => params[:page], :order => "name") 
    end 
end 

Ce que je veux sur l'action index est tous les client_regions pour un client donné, à savoir:

client_1.client_regions 

Ce que je suis réellement obtenir est-ce que toutes les régions clientes du système sont:

ClientRegion.all 

Je me suis gratté la tête à ce sujet pour un moment, alors j'ai pensé que je demanderais ici. La chose étrange est que les autres actions fonctionnent comme je l'espère, c'est juste l'action d'index qui est défectueuse.

Edit: mes itinéraires sont définis comme

map.resources :clients, :has_many => :client_regions 

Ainsi, les chemins sont

/clients/1/client_regions 
/clients/1/client_regions/new 
/clients/1/client_regions/20/edit 

etc

+0

Qu'est-ce que votre look de route comme? Je le fais en utilisant make_resourceful et ça marche très bien pour moi. Si vous ne pouvez pas le comprendre, vous pouvez toujours remplacer current_objects pour définir manuellement la collection. –

+0

Je sais que je peux facilement contourner cela, mais make_resourceful fonctionne si bien que je veux vraiment comprendre ce que je fais de mal ici. – DanSingerman

+0

Merci de poster vos itinéraires. Cela ressemble totalement à ça devrait marcher. Quelle version de make_resourceful utilisez-vous? La mise à jour du dernier code pourrait le réparer (c'est ce que j'utilise, et comme je l'ai dit, cela fonctionne très bien pour nous). –

Répondre

0

Ok - je fixe moi-même.

J'ai laissé du code hors de question pour le simplifier, mais c'était la source du problème. (Ont modifié la question de la remettre dans)

Le correctif a été de changer la méthode current_objects à

def current_objects 
    @current_objects ||= @client.client_regions.paginate(:page => params[:page], :order => "name") 
end 

vraiment tout à fait évident avec le recul ...

Questions connexes