我有一个名为Factors的模型,它有两种类型:['personal', 'advisor']
我希望有一个控制器FactorsController
对Factors
这两种类型都有相同的操作,但只使用一种类型。它使用的类型基于用于到达那里的路线。例如,
/personal
将转到factors#index
并使用@factors
填充Factor.personal
/advisors
将转到factors#index
并使用@factors
填充Factor.advisors
我该如何设置呢?
答案 0 :(得分:4)
您可以添加路线
type_regexp = Regexp.new([:personal, :advisor].join("|"))
resources :factors, path: ':type', constraints: { type: type_regexp }
并且您将能够在控制器中使用params[:type]
,这样您就可以在将来更改路线时提供灵活性。
这也使您能够在视图中使用factors_path(type: :personal)
。
答案 1 :(得分:2)
您可以将其添加到您的路线:
resources :factors, :path => :personal
resources :factors, :path => :advisor
这将有/ personal和/ advisor。然后,您希望让因素#index决定使用哪条路径(您可以使用request.url
)并相应地填充@factors
。
答案 2 :(得分: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