|
||||||||||||||||
| 前のページ 1 2 3 4 次のページ | ||||||||||||||||
| 内部の動作 | ||||||||||||||||
|
JavaScriptを読み込んだ以外は、ビューを1行変更してコントローラに1行追加しただけで、フォームがオートコンプリートに対応してしまいました。 このように簡単にできてしまうのはなぜでしょうか。そこで、次にRailsが内部でどのように動いてくれているのか簡単に解説していきます。 |
||||||||||||||||
| ビューの動き | ||||||||||||||||
|
ビューでテキストフィールドを「text_field_with_auto_complete」タグに書き換えることでCSS、オートコンプリート表示のDIV区画、Ajax通信処理などが自動的にレンダリングされます。JavaScriptを一行も書くことなく、タグを書き換えること以外に一切の記述は不要です。 ヘルパーメソッドは通常のHTMLに極めて近いタグ形式で記述されているため、段階的、部分的にAjax化するという要望にも応えやすく、Ajaxの特徴を殺すこともありません。 |
||||||||||||||||
| コントローラの動き | ||||||||||||||||
|
コントローラに「auto_complete_for :contact, :name」と宣言的に記述することで、オートコンプリートの表示項目にDBを検索するメソッドが動的に追加され、クライアントサイドと連動します。 重要なのはRailsではメソッドが実行時にメモリ上で「動的に」生成されていることです。JavaEEなどのように、実行前にツールを用いてコードジェネレートする必要がないのはこの理由によります。 動的にクラスへメソッドを追加できるのは強力なリフレクション機構を持つRuby言語自体の特性です。Railsではオートコンプリートの他にも、この機構を活用して驚異的なコード量削減を実現している箇所が多くあります。RailsがJavaでもPHPでもなくRuby上に構築されて登場した理由はこの辺りにあるのかもしれません。 |
||||||||||||||||
|
前のページ 1 2 3 4 次のページ |
||||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||


