views:

198

answers:

1

I am using the make_resourceful plugin in my Rails app, and attempting to use nested resources.

My controller code looks like this:

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

What I want to get on the index action is all the client_regions for a given client, i.e:

  client_1.client_regions

What I am actually getting is all the client regions in the system, i.e.:

ClientRegion.all

I've been scratching my head at this for a while, so I thought I'd ask here.

The weird thing is the other actions work as I expect, it is just the index action that is faulty.

Edit: my routes are defined as

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

So the paths are

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

etc

A: 

Ok - I fixed this myself.

I left some code out of the question to simplify it, but that was the source of the problem. (Have edited the question to put it back in)

The fix was to change the current_objects method to

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

Quite obvious really in hindsight...

DanSingerman