[前][次][番号順一覧][スレッド一覧]

rails:879

From: Kazuhiro Yoshida <moriq@m...>
Date: Mon, 16 Jan 2006 16:05:40 +0900
Subject: [rails:879] Re: controller内サブディレクトリのベースコントローラーは?

もりきゅうです。

manabu togawa wrote:
> app/controller/内にadminという名前のサブディレクトリを作成し、管理者用の 
> ページをまとめたいと思っています。
>  
> アプリケーション共通のコントローラapp/application.rbのように、adminディ 
> レクトリ内だけで共通のコントローラはどのように定義することができるので 
> しょうか?またadmin共通のレイアウトはどのディレクトリに用意すればよいの 
> でしょうか?

まず controller と view のサブディレクトリについて。
これはモジュール名を付けたコントローラを作ることになります。
例えば、

$ script/generate controller Admin::Customer list show new edit destroy
      create  app/controllers/admin
      create  app/helpers/admin
      create  app/views/admin/customer
      create  test/functional/admin
      create  app/controllers/admin/customer_controller.rb
      create  test/functional/admin/customer_controller_test.rb
      create  app/helpers/admin/customer_helper.rb
      create  app/views/admin/customer/list.rhtml
      create  app/views/admin/customer/show.rhtml
      create  app/views/admin/customer/new.rhtml
      create  app/views/admin/customer/edit.rhtml
      create  app/views/admin/customer/destroy.rhtml

こうすると、

app/controllers/admin/customer_controller.rb:
class Admin::CustomerController < ApplicationController
...
end

このように、ディレクトリに合わせてモジュール名が付きます。

これに対応する view は、上記で作られたファイルを見れば明らかなように、
app/views/admin/customer/
というディレクトリに置くことになります。


app/application.rb のような共通のコントローラについては、継承関係を作れ
ばいいと思います。
例えば、

app/controllers/admin/application.rb:
class Admin::ApplicationController < ApplicationController
...
end

これをadminに共通のコントローラとして作っておけば、

app/controllers/admin/customer_controller.rb:
class Admin::CustomerController < Admin::ApplicationController
...
end

このように継承して使えるでしょう。

--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

   @   878 2006-01-16 02:35 [togawamanabu@g...   ] controller内サブディレクトリのベースコントローラーは?
->     879 2006-01-16 08:05 ┗[moriq@m...          ]                                       
       880 2006-01-16 08:22  ┗[moriq@m...          ]                                     
   @   881 2006-01-16 15:52   ┗[togawamanabu@g...   ]