その他の注目すべきファイル
生成された「app/views/layouts/application.rhtml」ファイルは、アプリケーションレベルの(つまり全コントローラで使用可能な)一貫性のあるルックアンドフィールを提供し、ヘッダやフッタなどの要素を含んでいます。しかし、コントローラ固有のレイアウトを作成したい場合もあるはずです。そこでこのファイルの名前を「wiki.rhtml」に変更し、特定のWikiControllerにのみ適用されるようにしました。さらに、この「wiki.rhtml」ファイルをカスケーディングスタイルシート(CSS)ファイル「public/stylesheets/wiki.css」にもリンクさせました。これにより、色やフォントなどのアプリケーションの外観をCSSで制御できるようになります。
さらに私が少々カスタマイズしたもう1つの生成ファイルは「config/routes.rb」です。マッピングの1つを変更し、生成された「public/index.html」ファイルを削除することで、行末のURI(/wiki/)を指定せずにインデックスページにアクセスできるようにしました。
map.connect '', :controller => "wiki"
これで、http://localhost:3000/のURLは、http://localhost:3000/wiki/と同じものとして処理されます。
また、「config/routes.rb」ファイルに次の行を追加して、WebサービスのURLのように簡潔なREST(Representational State Transfer)を使用できるようにしました。
map.connect 'wiki/:action/:f', :controller => "wiki"
例えば上の行を追加すると、http://localhost:3000/wiki/view?f=untitledのようなURLは、http://localhost:3000/wiki/view/untitledと表示されます。この種のURLの書式設定は、Railsのヘルパーメソッド(link_to、redirect_to、url_forなど)により自動処理されます。
次のステップ
これで正常に機能するWikiシステムが完成しました。しかし、この基本システムはまだ改良の余地があります。Railsをさらに学習したい方や、本稿のサンプルをとにかく改良してみようと思う方は、以下に挑戦してみてください。
- Railsの機能を活かして、アプリケーションのWikiページをデータベースに永続化できるようにする(実際のWikiテキストにはtextデータ型を使用する)。
- インデックス作成機能と検索機能を提供する既存のRuby gemを使用して検索機能を追加する(例えば、ferret.davebalmain.com/tracで、このような機能を持つFerretというgemを入手可能)。
- WikiWordや変更履歴などの一般的なWiki機能のサポートを追加する。
以上を参考にしながら、RubyとRailsのコーディングをぜひ楽しんでください。
