Adminを見ていきます。このgemを使うとRailsアプリケーションに管理用画面を簡単に追加できます。見栄えのする管理用画面を作成できるだけでなく、自由にカスタマイズ可能です。ライブデモで実際に動作する様子を見ることができます。Adminを追加します。対象のアプリケーションは簡単なEコマースアプリで、複数の商品があり、それぞれが価格を持ちカテゴリに属します。Adminを使って管理用画面を作成して商品を管理できるようにします。Adminはgemとして配布されていて通常の方法でインストールできます。Gemfileに参照情報を追加しbundleコマンドを実行します。gemも忘れずにインクルードするようにします。3.0の環境ではこの問題は存在しないためインクルードする必要はありません。Adminを追加します。このジェネレータが、実行後に追加で行なわなくてはいけない設定作業についての指示を与えてくれます。開発環境のMailer設定でホストオプションを追加する必要があります。URLを設定することとアプリケーションのレイアウトファイルでnoticeとalertのフラッシュメッセージを追加することを忘れないようにしてください。%></p>今回のアプリケーションではこれらすべてについて対応したので、次に進みます。コマンドがマイグレーションをいくつか生成したので、それをここで実行します。Adminのドキュメンテーションを見ると、インストール時にユーザが新規作成され、ユーザ名がadmin@example.com、パスワードがpasswordに設定されるとあります。この認証情報を使ってログインします。(ユーザ名とパスワードをカスタマイズしたければ、マイグレーションの実行前にdevise_create_admin_users.rbを編集します。Railsサーバを起動してhttp://localhost:3000/adminにアスセスするとログインフォームが表示されるので、先ほどの認証情報を使ってログインします。Adminのダッシュボードが表示されますが、まだあまり見るべきものはありません。Adminに追加します。app/admin/products.rbこのジェネレータがアプリケーションのapp/adminディレクトリの下にproducts.rbファイルを作成します。管理用ダッシュボードを再度読み込み直すとProductsリンクが表示されます。このリンクをクリックすると商品を管理するのに必要なものがすべて入ったページが現れます。このページは、属性によって商品を並べ替えたり絞り込むことができます。AdminはCategoryに対してbelongs_toの関係が設定されていることを検知して、商品をカテゴリで絞り込むためのドロップダウンメニューを表示してくれます。これは新しい商品を作成するときにも機能します。それぞれのデータ型によって、カテゴリはドロップダウンリストとして表示され、その他の属性は入力フィールドが表示されます。この機能は簡単にカスタマイズできます。最初に商品カタログページをカスタマイズして、表示される列数を減らします。そのためには、生成された/app/admin/products.rbファイルを修正します。indexメソッドをオーバーライドして、カタログページを変更します。このメソッドにはブロックがあり、そこでcolumnを呼び出してページに表示する列を指定します。endend商品ページを再度読み込むと、希望する列が表示されています。Categoryとの関連が自動的に検知されて、それぞれの商品に正しいカテゴリが表示されています。カスタマイズをさらに進めて、columnの1つ目の引数としてタイトルを渡して列のタイトルを変更します。この方法で、released_atフィールドの名前を変更します。endend列の値を変更したい場合は、columnにブロックを渡します。価格フィールドには今のままでは通貨記号が表示されていないので、これを修正します。columnメソッドはブロックをとることができ、それを追加することで現在のモデルインスタンス(この例ではProduct)がブロックに渡されます。ブロックから返される値がその列に表示されます。ここでヘルパーメソッドにアクセスすることができるので、number_to_currencyを使って価格を正しく表示できます。Date)」に変わり、商品の価格が正しい通貨の表記で表示されています。価格フィールドから返される値をカスタマイズしているので、このフィールドは並べ替えることができなくなりました。各項目の編集と削除のリンクもなくなっています。Adminに対して並び替えの方法を指定するようにします。この修正を行い、加えてdefault_actionsを呼び出して編集と削除のリンクを元のように表示させます。endend価格フィールドには通貨記号が表示されるようになりましたが、右寄せされていたらより見やすいでしょう。これはCSSを使って対応可能ですが、そのためにはまず列を参照する方法が必要です。AdminはMarkabyによく似たHTML生成の方法を提供します。必要な作業は、メソッドを呼び出して生成したいタグの名前を指定するだけです。:classオプションを一緒に指定して、CSSから参照できるようにします。endendこれでactive_admin.css.scssファイルを修正してこの列のスタイルを変えることができます。:right;}価格の列が正しく右寄せされました。Adminのもう一つの優れた機能がスコープです。用意されたフィルタのように動作し、2段階の作業で作成できます。Adminの設定ファイルでスコープの呼び出しを追加し、スコープの名前を渡します。endend次にProductモデルにそのスコープを記述します。nil)end商品の管理用画面を再度読み込むと、スコープのリストが表示されています。クリックすると、そのスコープでフィルタがかけられた商品のリストが表示されます。ダッシュボードをカスタマイズする次にダッシュボードのカスタマイズ方法を見ていきます。デフォルトでは空になっているので、最近の商品を表示するように修正します。そのために/app/admin/dashboards.rbファイルを編集します。このファイルのコメントに役に立つドキュメントがあり、いろいろなカスタマイズ方法が説明されています。ダッシュボードにセクションを追加するにはsectionメソッドを使用します。表に最近の商品をリスト表示したいのですが、そのためにはtable_forコマンドを使用します。そのブロックで、商品カタログの管理用画面をカスタマイズしたときと同じ方法で、表示したい列をcolumnを使って指定します。すべての商品を表示するページへ戻るためのリンクも追加します。endendダッシュボードを再度読み込み直すと、最新発売された商品5件がリンクと一緒に表示されます。一覧中の各商品にそれぞれの管理用画面へのリンクがあればより便利でしょう。そのためには、価格の列を編集したときのように、columnメソッドにブロックを渡します。endendlink_toにはパスを定義するより簡単な方法があります。admin_product_path(product)を使う代わりに、配列で1個目の要素にシンボルを、2個目にproductを指定して渡します。product]ダッシュボードを再度読み込むと、各商品のタイトルがリンクとして表示されます。リンクのひとつをクリックすると、その商品の管理ページが開きます。3.1の環境で利用する場合に注意しなくてはいけない問題があり、トップページに戻るとそれを確認できます。Adminのスタイルシートがすべてのページにインクルードされているため、ページの体裁が前と違って表示されてしまいます。.の行の影響で、デフォルトではすべてのスタイルシートがインクルードされます。これは希望する形ではないので、アプリケーションのスタイルシートをより細かく制御できるように、とりあえずこの行を削除してしまうのがいいでしょう。productsに置き換えます。*/より優れた解決策は、SASSのimportコマンドに切り替える方法です。アプリケーションのメインのCSSファイルのファイル名に拡張子の.scssを追加してSASSに切り替えます。その上でファイルの最初にあるマニフェスト(上のコードで示した部分)を削除して、ファイルの最後にimportコマンドを追加します。"products";ここでトップページを再度読み込むと、正しいスタイルシートだけが読み込まれるので、ページは正しく表示されます。Adminには/config/initializersディレクトリにもう一つの設定ファイルがあります。今回のエピソードの残りを使って、これを見ていきます。ファイルには多くの設定オプションが含まれ、そのほとんどはコメントアウトされています。唯一有効になっているのが管理用サイトのタイトルで、これを変更してみます。omitted.end変更を反映させるためにサーバを再起動すると、新しいタイトルが表示されます。今回のエピソードは以上です。今回触れることができなかった点がたくさんあるので、ドキュメンテーションを参照してその他の機能を確認することをお勧めします。Adminのすべての画面は目的に合うように外観と機能をカスタマイズできるので、Railsアプリケーションに管理機能を付加したい場合には強力な解決策になります。