09:00Webシステム開発工程でかなりのウエートを占めるのが、HTMLテンプレートのコーディングです。Railsには、この作業を効率化するための様々な工夫が凝らされています。今回は、RailsがHTML文書を生成する基本的な仕組みについて解説します。Railsの重要な特徴の1つが、URLの形式です。次のURLをご覧ください。http://www.example.com/show_product.cgi?product_id=123これは典型的なCGIプログラムのURLの例です。ブラウザがこのURLに対してリクエストすると、Webサーバはあるディレクトリの下にあるshow_product.cgiというプログラムを起動します。Railsでは、次のようになります。http://www.example.com/products/show/123これがRails式のURLの基本形です。URLのパス部分(/products/show/123)に注目してください。スラッシュ(/)で3つの部分に区切られており、それぞれに特別な意味が与えられています。Railsアプリケーションはそれ自体がWebサーバとして動作しています。ブラウザからこのURLに対するリクエストを受けると、URLからコントローラとアクションを決定します。Railsアプリケーションを「機械」に例えると、コントローラは「部品」に、アクションは部品の「機能」に相当します。アプリケーションは、アクションを指定してコントローラにIDすなわち「信号」を送ります。コントローラは様々な処理を経て、HTML文書を生成し、ブラウザに送り出します。実際の開発ではこのような単純な形式のURLだけで済むとは限りません。このURLの基本形をしっかり理解することが大切です。コントローラとアクションでは、コントローラとアクションが実際にどのようなコードとして表現されるかを見ていきましょう。前回の記事で作成したプロジェクトapp1を引き続き使用します。NetBeansのプロジェクトウィンドウで[app1]→[コントローラ]の順にフォルダを展開します。[products_controller.rb]を開き、次のように修正します。[app1]フォルダを右クリックし、[実行]を選択します。Aboard」のページが表示されたら、アドレスバーに「http://localhost:3000/products/show/123」と記入して[Enter]キーを押します。画面表示が次のように変わります。endという構文に着目してください。これは、Ruby言語で「クラス」を定義する時の書き方です。先ほど、アプリケーションを「機械」に例えたとき、コントローラは「部品」に当たると説明しました。この比喩を引き続き使用するならば、クラスは部品の「設計図」に相当します。Railsアプリケーションは、起動時にこの設計図を見てコントローラを実体化し、ブラウザからの要求を待ちます。classの次にあるProductsControllerはコントローラクラスの名前です。Ruby言語では、クラス名は必ず大文字で始まることになっています。Railsの規則により、コントローラクラスの名前は必ず「Controller」で終わらなければならず、コントローラの名前(products)と分離してはなりません。クラス名の右にある記号「<」は、このクラスがApplicationControllerという別のクラスを「継承」していることを示しています。別の設計図の一部を取り込んでいる、ということです。endという構文です。Ruby言語で「インスタンスメソッド」を定義するときはこのように記述します。コントローラクラスのインスタンスメソッドは「アクション」と呼ばれます。今回の修正の結果、productsコントローラには、indexとshowという2つのアクションが定義されたわけです。showアクションの中身はたった1行です。Product.find(params[:id])Product.findという書き方については前回触れました。productsテーブルからユニークなIDでレコードを検索してくれるものです。括弧の中に指定されているparams[:id]は、URLの末尾に指定されたidパラメータの値です。私たちは「http://localhost:3000/products/show/123」というURLでアクセスしましたので、params[:id]には"123"という文字列が格納されています。この結果、productsテーブルからIDが123であるようなレコードが検索されることになります。実際にWebブラウザでこのURLにアクセスしてみると、エラー画面が表示されてしまいました。これは仕方がありません。データベースのproductsテーブルにはidが123であるようなレコードは格納されていないのです。showというアクション(インスタンスメソッド)が反応していることは確認できました。※この続きは、会員の方のみお読みいただけます(登録無料)。会員登録(無料)ログインはこちら※この続きは、会員の方のみお読みいただけます(登録無料)。専門の教育・コンサルティング会社オイアクスを設立。RailsでWeb制作』(共著、翔泳社刊、2008)がある。EYACCの森島さんはいかにして生まれたのか318SAPが会津若松で中小企業のものづくりのイノベーションに取り組む理由296AWSでセキュリティを高めるために今すぐやるべき7つのこと262企業のデジタルシフトはIoT、5G、サブスクリプションが牽引。Links主要テーマから探すIT戦略/企画ITインフラセキュリティデータベースデータ活用システム構築システム運用モバイル活用クラウド活用ワークスタイル変革CRM/コラボレーション製品/サービス×ログインEメールパスワード※旧SEメンバーシップ会員の方は、同じ登録情報(Eメール&パスワード)でログインいただけます。パソコン「EnterpriseZine」(エンタープライズジン)は、翔泳社が運営する企業のIT活用とビジネス成長を支援するITリーダー向け専門メディアです。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。