多次使用相同资源的路由

时间:2015-02-12 07:31:12

标签: ruby-on-rails model-view-controller rails-routing

我有一个模型示例,其中has_many:users但也属于一个Group。我想要一个只是示例的索引和组示例的另一个索引。 like- url.com/examples(仅显示没有group_id的示例)和url.com/group/1/examples。目前我的路线文件如下所示:

Rails.application.routes.draw do

resources :groups do
  resources :examples
end

resources :examples

但我确定您知道这会产生问题,因为索引操作相同导致所有示例都显示在url.com/examples和url.com/groups/1/examples上。

我搜索并搜索并搜索了这个答案但由于某种原因我无法找到解决方案。

1 个答案:

答案 0 :(得分:3)

如果您是从嵌套路线到此处,可以在before_filter中签入examples_controller并相应地设置控制器的行为。例如:

class ExamplesController < ApplicationController
  before_filter :set_group, if: -> { params[:group_id].present? }
  def index
    @examples = if @group
                  @group.examples
                else
                  Example.where(group_id: nil)
                end
  end
  # ...
  private
  def set_group
    @group = Group.find(params[:group_id])
  end
end