3

Factorsという名前のモデルが1つあり、次の2つのタイプがあります。['personal', 'advisor']

FactorsController両方のタイプに対してすべて同じアクションを持つ1つのコントローラーが必要ですがFactors、使用するのは1つのタイプのみです。使用するタイプは、そこに到達するために使用されるルートに基づいています。例えば、

/personalにルーティングしてfactors#indexデータを入力@factorsFactor.personal /advisorsますにルーティングしてfactors#indexデータを入力@factorsしますFactor.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

3 つのコントローラーを作成します。

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 に答える