Railsプロジェクトの階層表現
■ 目的
Railsでプロジェクトを作成していくと、Controllerクラスなどが肥大化する傾向にある。
そこで、プロジェクト構成を分かりやすくするために、プロジェクトに階層を持たせる。
■ 構成
試しに、「admin」ディレクトリ以下にコントローラーを作成する場合。
全て作成するとプロジェクト構成は以下になる。
example>app>controllers >admin>main_controller.rbController
>helpers>main>admin>main_helper.rb
>views >main>admin>index.html.erb
app/controllersの直下にadminディレクトリを作成。
adminディレクトリ以下に、main_controller.rbを作成する。
クラス名は、「ディレクトリ名::コントローラー名」で記述する。
class Admin::MainController < ApplicationControllerHelperend
app/viewsのディレクトリ直下にadminディレクトリとmainディレクトリを作成。
mainディレクトリ以下に、main_helper.rbを作成する。
View
app/viewsのディレクトリ直下にadminディレクトリとmainディレクトリを作成。
mainディレクトリ以下に、index.html.erbを作成する。
Model
Modelには特に制限はない。
■ URLの指定方法
views/admin/indexにアクセスする場合は、以下になります。
⇒ http://localhost:3000/admin/main/index
■ redirect_toやlink_toの指定方法
views/admin/indexにアクセスする場合は、以下になります。
⇒ redirect_to :controller => '/admin/main', :action => 'index'
⇒ link_to 'テスト', :controller => '/admin/main', :action => 'index'
※ 注意事項
controllerを指定する際に、以下のことに注意する。
・頭に'/'をつける。
・シンボルは使用しない。
例えば、深い階層(例だとadmin以下)のcontrollerから浅い階層(controllers直下)に
redirect_toする場合に、シンボルやスラッシュなしで指定していると、admin直下を
探しに行ってしまう。
■ generateの記述
generateでは以下のように指定する。
# ruby script/generate controller admin::main