直樹2013.08.1244518この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。インストールから基本的な機能まで学習しました。持つ膨大な機能の中から僕が比較的多用している機能を7つばかり紹介していくとします。何?という方は、先に以下の記事をご参照ください。レイアウトを無効にするすべてのテンプレートファイルは何らかのレイアウトに囲われた状態で出力されますが、時にレイアウトを全く使用したくないという状況もあるでしょう。具体例として、モーダルダイアログ内に読み込む外部ファイルなどが考えられます。そんな時はテンプレートファイルがレイアウトに囲われないように無効化する訳ですが、以下の二種類の方法でこれを解決することが出来ます。false---こうすることで、対象のテンプレートファイルはどのレイアウトにも囲われずに出力されます。指定するテンプレートファイル数が少ない場合はこの方法で充分でしょう。指定するのが良いでしょう。ディレクトリ以下にある全てのテンプレートファイルにレイアウト無効が適用されます。データの外部ファイル化テンプレートファイルからコンテンツデータを外部ファイルとして外出しにしておくことで、後々の修正やテンプレートファイルの使い回しなど何かと利便性が向上します。ここではユーザー管理ツールを例にとってみます。あるタイプとしてユーザー一覧、ユーザー新規登録、ユーザー編集といった三画面の構成が考えられるでしょう。編集画面の入力フォームは同じであることが多いため、フォーム部分をパーシャル化してユーザー情報をローカルデータとして外部ファイル化しておくと、コードの重複を抑えることが出来て非常に効率的です。テンプレートファイルです。_form.hamlの3ファイルを用意します。'btn'基本的に新規登録画面は各フォームインプットが空欄なのに対して、編集画面は既存データがインプットに初期値として入力されています。次にその既存ユーザーデータをローカルデータに定義します。ディレクトリ内に配置します。形式で作成することにします。"foowakamsha"}}簡単なユーザー情報を定義しました。どこからでも参照することが出来ます。参照式は以下のとおりです。data.{ファイル名}.{要素名}これで材料は全て揃いました。入力しないというコードを追記します。'btn'これで完成です。共通のパーシャルファイルを使用していますが、新規登録画面ではフォームアイテムには何も入力されておらず、編集画面では初期値としてユーザー情報が入力されるようになりました。動的ページを作る例えばブログサイトのように表示するコンテンツが違うだけでページデザインは全く同じというケースの場合、ページの数だけテンプレートファイルを作成するのはスマートではありません。単一のテンプレートで複数のコンテンツページが出力できれば、管理も非常に楽になります。以下に簡単な例を紹介します。はじめに動的ページの元となるテンプレートを作成します。nameメンバーの名前を出力するだけの簡単なテンプレートを用意します。いう変数を定義し、ここに呼び出し元から値が渡ってきてブラウザ上に出力される訳です。メソッドを呼び出し、作成(※出力)したいパスと、使用するテンプレートファイルのパスを指定します。ページを出力することが出来るというわけです。ページが出力されます。Stones</h1><p>Charlie</p>ローカルデータを活用することでより多くのパラメータを一括で渡す先のサンプルでは簡単な配列データを元にしてテンプレートに一つの値だけを渡しただけですが、ローカルデータを使うことでより多くのデータをテンプレートに一括で渡すことが出来る上、ソースコードもスッキリと整頓することが出来ます。メンバーの生年月日と担当パートを含めたデータを作成しました。ループ処理にかけます。パラメータとして渡します。member[:part]受け取ったパラメータを出力します。出力結果は以下のようになります。して出力されることになります。それで問題ないというならともかく、多くの場合は不要かと思います。メソッドを以下のように書き換えることで解決出来ます。出力されるようになります。同時にインストールされます。ブラウザを自動的にリロードされるようになります。地味な機能ですが、あるとそれなりに恩恵を感じる優良な機能といえます。ある以下のコードをコメントインして有効化することができます。環境でのみ動作を確認出来ました。*1、僕の環境では動作させることができませんでした。コメントにて打開策をご紹介いただきました。ダイレクトに指定すれば全ての画面に進めることが求められます(※いきなり登録完了画面を表示させたいだとか)。自作するのはあまりにも手間です。指定すれば以下のようなサイトマップを表示させることができます。各ページへのリンクはもちろん、どういった構造になっているのかもここで確認することができます。ディレクトリインデックスプロトタイピングという用途においては全く意味のない機能ですが、知識として抑えておくとします。ソースファイルがあったとします。charlie.html.hamlこれらをビルドすると以下のような構成になります。http://try_middleman/stones/mick.htmlとなります。なるようにビルドすることが出来ます。ごとにフォルダを作成してそのフォルダのindex.htmlとして各テンプレートファイルを出力します。http://try_middleman/stones/mick.htmlとビルドされるところをhttp://try_middleman/stones/mick/index.htmlとビルドされているだけのことです。ちなみに元からindex.htmlとしてビルドされるテンプレートに関してはそのまま無視されます。falseと指定することも出来ます。紐づく細々としたファイル群(アセット)を一つのファイルとして連結したり、コードの文法上不要なインデントや改行を全て取り払ってファイルサイズを圧縮する機能のことです。サイト高速化のテクニックとして知られています。コーディングといった用途に特化して使い続けるのもアリでしょう。最初から組み込まれているので、最初からこの機能を使うことが出来ます。