2011-08-08 8 views
1

私は名前空間(管理セクション)でアプリケーションを開発中です。 2つのコントローラを作成しないDRYソリューションはありますか?なぜなら、ユーザーを管理するには、パブリック・ユーザー・コントローラーと管理ユーザー・コントローラーを作成する必要があるからです。レールに名前空間を使用しているときにダブルコントローラを使用しますか?

+0

私は少しあなたの質問で混乱しています。ユーザーのプロファイルを表示するためのコントローラと、管理者がそのコントローラを編集できるようにするコントローラの2つのコントローラがあり、それら2つをマージしたい場合はありますか?あるいは、「ユーザー」という概念と「管理者」の概念を持ち、ロールベースのモデルを使用してそれらを結合したいのですか? –

+0

最初のものです。私はそれらをマージするためのソリューションが欲しい。 – Databaas

答えて

1

ユーザコントローラを継承するのはどうですか?

# file: apps/controllers/images_controller.rb 
class ImagesController < ApplicationController 
    # image code (to show the image for example) 
end 

# file: apps/controllers/admin/images_controller.rb 
class Admin::ImagesCOntroller < ImagesController 
    # additional admin code (to delete the image for example) 
end 
+0

私は現時点でAdmin :: BaseControllerを継承しています。しかし、私はあなたが示唆していることが最善の方法だと思います。 – Databaas

+0

エラーが見つかりました:もちろんImagesControllerは独自の(通常の)継承を持っています – Veger

0

オプションの「編集」ボタンを使ってページをレンダリングすることを検討することもできます。例えば、このような何か:

Name: <%= @user.name %> 
<% if @user.admin? %> 
<% form_for @user do |f| %> 
    Editing stuff 
<% end %> 
<% end %> 

そのように、ユーザーはページとしてそれを見ているが、管理者は、彼らがフィールドを編集することを可能にする追加のコントロールを見ています。 P.S.コントローラーで、更新呼び出しを呼び出す管理者であることを確認していることを確認してください。

関連する問題