3

我有一个名为 Factors 的模型,它有两种类型:['personal', 'advisor']

我想要一个控制器FactorsController,它对两种类型都具有所有相同的操作Factors,但只使用一种类型。它使用的类型基于到达那里的路线。例如,

/personal将路由到factors#index并填充@factorsFactor.personal /advisors路由到并factors#index填充@factorsFactor.advisors

我将如何进行设置?

4

3 回答 3

4

您可以添加到路线

type_regexp = Regexp.new([:personal, :advisor].join("|"))
resources :factors, path: ':type', constraints: { type: type_regexp }

并且您将能够params[:type]在控制器中使用,这为您提供了灵活性,以防您将来想要更改路线。

这也使您能够factors_path(type: :personal)在视图中使用。

于 2013-06-27T05:39:32.817 回答
2

您可以将其添加到您的路线:

resources :factors, :path => :personal
resources :factors, :path => :advisor

这将同时具有 /personal 和 /advisor。然后,您需要让 factor#index 确定使用了哪个路径(您可以使用request.url)并相应地填充@factors

于 2013-01-31T18:41:53.210 回答
0

我将创建三个控制器:

class PersonalController < FactorController
  def factor
    Factor.personal
  end
end

class AdvisorController < FactorController
  def factor
    Factor.advisors
  end
end

class FactorController < ApplicationController
  #all the shared stuff here, using the factor method from each in your methods
end

然后路线将是:

route '/personal' => PersonalController#index
route '/advisors' => AdvisorController#index
于 2013-09-30T23:37:52.667 回答