2

私が疑問に思っていることは、Rails で同じリソースの別のインデックス ビューを作成する最善の方法です。

たとえば、ユーザーのグループがあり、ユーザーの表形式のビューを生成するユーザー コントローラーの現在のインデックス アクションがあるとします。次に、マップ上にすべてのユーザーをプロットする 2 つ目のインデックス ビューを作成します。Users コントローラーで新しいアクションを作成するか、新しいインデックスを使用して新しいコントローラー (UsersMap など) を作成するのが最善の方法でしょうか?

感想よろしくお願いします...

私のルートファイルは次のようになります。

resources :users, :only => [:index, :index_with_map, :show, :edit, :update] do 
     match '/index_with_map' => 'users#index_with_map' 
end 

しかし、「users/index_with_map」を押すと、次のようになります。

ActiveRecord::RecordNotFound at /admin/users/index_with_map Couldn't find User with id=index_with_map
4

2 に答える 2

1

そのアクションを UsersController に追加することもできますが、Users や Maps を含むさらに多くのアクションを作成する場合は、(単一責任の原則に準拠するために) 新しいコントローラーを作成することを検討することをお勧めします。

ガイドから:

リソースが豊富なルートに多くの余分なアクションを追加していることに気付いた場合は、停止して、別のリソースの存在を偽装していないか自問してください。

あなたはこれを行うことができます:

resources :users do
  collection do
    get 'index_with_map'
  end
end

これにより、Rails は /users/index_with_map などのパスを GET で認識できるようになります。

于 2013-03-19T12:30:08.943 に答える
0

最善の方法は、ユーザー マップを処理する新しいアクションを追加することです。その後、そのアクションに対応するビュー ファイルを作成するだけで済みます。

ユーザーは同じテーブルを対象としており、機能が異なるだけです。では、なぜ別のコントローラーが必要なのでしょうか?

また、マップ ビューのためだけに別のコントローラーを作成する場合、それは単にリソースの浪費であるため、それを使用することはできません。

もう一つのポイントは -

コントローラーは、ユーザーがモデルを操作できるようにします。したがって、コントローラーが 2 つあるということは、通常、2 つのモデルが必要であることを意味します。したがって、さまざまな (カテゴリの) ことを実行する場合は、さまざまなコントローラーが使用されます。

于 2013-03-19T12:34:43.290 に答える