2009-01-28 100 views
0

我在我的Rails应用程序中使用make_resourceful插件,并尝试使用嵌套资源。Rails - 使用嵌套资源make_resourceful

我的控制器代码如下所示:

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 

我想对指数作用对于一个给定的客户端所有client_regions,即是:

client_1.client_regions 

我所实际得到是系统中的所有客户区域,即:

ClientRegion.all 

我一直在为此挠头有一阵子,所以我想我会在这里问。

奇怪的是,其他行动工作正如我所期望的那样,它只是错误的索引行为。

编辑:我的路线定义为

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

所以路径是

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

+0

什么是你的路线是什么样子? 我正在做这个使用make_resourceful,它对我来说工作正常。 如果您无法弄清楚,可以始终覆盖current_objects以手动设置集合。 – 2009-01-28 17:28:24

回答

0

好了 - 我这个固定自己。

为了简化,我留下了一些代码,但这是问题的根源。 (已经编辑把它的问题回)

的修复是改变current_objects方法

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

真的在事后很明显...