0

我喜欢我的控制器使用请求 URL 包含的所有 id,而无需指定控制器路由。

我的路线:

...
resources :users do      
  resources :properties
end
...

我的控制器是标准的脚手架控制器。让我们看一下索引方法:

def index
  properties = Properties.all
  respond_to do |format|
    format.json { render json: properties }
  end
end

def show
    @property = Property.find(params[:id])
    respond_to do |format|
       format.json { render json: property }
    end
end

像/users/10/properties这样的路由的问题是它没有获取 10 的 user_id 并且没有使用它来创建查询。它查询所有属性而不是子集。

我还简化了修改 url 以查看其他用户属性,只是玩弄“id”,不需要找到匹配的“user_id”+“id”,因为“user_id”被忽略了。

当然,我可以在代码中明确表达这一点,但这会使其成为特定路线。我也喜欢在非嵌套路由的上下文中使用控制器。

有标准的食谱来处理吗?喜欢查看所有以“_id”结尾的参数吗?

4

1 回答 1

1

查看https://github.com/josevalim/inherited_resources 它将帮助您(以及更多)

否则,您需要在索引操作中检查查询参数是否存在,如果存在,则查询该参数 (Properties.where(user_id: params[:user_id] )

于 2013-05-07T00:03:58.973 回答