• ブログ
  • ふぉとす
  • キーワード
  • ブックマーク
  • 写真
  • ログイン

Title

« 2008年03月13日 | 2008年03月15日 »
  • Wavesを試してみる - View編 2008-03-14 00:59:43

     昨日に引き続き、webフレームワークのWavesを試してみます。今日はビューから。
     ビューのファイルはtemplatesディレクトリ下にあるみたい。チュートリアルでは、entry用のビューのためにentryディレクトリを作れと書いてある。

    mkdir templates/entry
    

    で、このtemplatesディレクトリ下にはlayoutsディレクトリとerrorsディレクトリが存在しているのだけど、名前から想像できるようにlayouts/default.mabが、Railsでいうapp/views/layouts/application.html.erbに該当するみたい。

    doctype :html4_strict
    
    html do
    
      head do
        title @title
      end
    
      body do
        layout_content
      end
    
    end
    

    えっと、これはなんだろう。気づいてみれば、拡張子も.mabとなっている。やっていることは見れば理解できるけど…。
    どうやらこれはMarkabyというRubyっぽいテンプレートエンジンだそうです(Markup as Rubyの略らしい)。これは簡潔でいいね。と、言いたいところだけど、これってデザイナさんは置いてけぼりだ。ひとりで開発するなら全然ありだけど、チーム開発では難しいかな。WavesはMarkabyの他にもErubisをサポートしているので、そっちを使うのもいいかも。
     でもぼくはErubisよりもMarkabyが使いたいと思っているようなのでこのまま進めます。
     チュートリアルでは、templates/entry/list.mabとして以下のコードを書けと言っている。

    layout :default, :title => 'Blog Entries' do
      h1 'My Blog'
      @entries.each do |entry|
        view :entry, :summary, :entry => entry
      end
    end
    

     layoutというヘルパーが、default.mabでのlayout_contentにyieldされるみたい。Railsとちがって、これは指定してあげないといけないみたい。ここで引数に:title を指定しているけど、これがdefault.rbでは@titleになるんだな。
     @entriesには、Entryモデルのデータが勝手に入っているらしい。コントローラでモデルから取り出すわけじゃないの? 詳細はのちほどと書かれているので、とりあえずスルーしておこう。
     そしてイテレータブロックの中のviewヘルパーが、Railsでいうところの render に当たるようだ。 これは、Railsで書くならこんな感じのことを意味しているみたい。

      <%= render :partial => "entry/summary", :locals => {:entry => entry} %>
    

    さて、呼び出され側のsummary.mabは以下のとおり。

    h2 do
      a @entry.title, :href => "/entry/#{@entry.name}" 
    end
    textile @entry.summary
    a 'Read more ...', :href => "/entry/#{@entry.name}" 
    

    内容は見てのとおり。URLがRailsとは違ってid値を使っていない。個人的にはこっちのほうが好みだけど、この場合だとブログの記事名をユニークにしないといけなくるなる。まいっか。
    textileというヘルパがよくわからないけど、ちゃんと説明がない。とりあえずスルー。

    ビューに関しては以上。で、サーバを起動する。

    waves-server
    

    おー立ち上がった。デフォルトのポート番号は3000。このwebサーバはなんだろう。独自のものなのかな。URLは /entries。間違って、/entryにアクセスしたらカラフルなエラーページが表示された。カッコいい。

    で、まだshowの画面がないので作れと書いてある。

    layout :default, :title => @entry.title do
      h1 @entry.title
      textile @entry.content
    end
    

    これでとりあえずは動きます。コントローラやURLルーティングはいつ書くんだ。というか書かなくてもこのくらいは動くんだね。

    それからcreate。チュートリアルではlist.mabにフォームを追加しているけど、そこはviewを使って書いてみた。

    layout :default, :title => 'Blog Entries' do
      h1 'My Blog'
    
      view :entry, :form
    
      @entries.each do |entry|
        view :entry, :summary, :entry => entry
      end
    end
    

    form.mabは、

    form :action => '/entries', :method => 'post' do
      label 'Name'
      input :type => :text, :name => 'entry.name'
      input :type => :submit, :value => 'Add'
    end
    

    こんな感じ。Rails同様、WavesもRESTfulなURLを採用しているみたいで、createはリストに対してpostメソッドを送っている。
    それから編集用のページをeditor.mabとして作成してみる。

    layout :default, :title => 'Edit Entry' do
      form :action => "/entry/#{@entry.name}/", :method => 'POST' do
        label 'Title'; br
        input :type => :text, :value => @entry.title, :name => 'entry.title'; br
        label 'Summary'; br
        textarea @entry.summary, :name => 'entry.summary', :rows => 10, :cols => 80; br
        label 'Content'; br
        textarea @entry.content, :name => 'entry.content', :rows => 20, :cols => 80; br
        input :type => :submit, :value => 'Save'
      end
    end
    

    ここでは、個別のentryに対してpostメソッドを送っている。RailsみたいにPUTではないらしい。
    ビューはとりあえずこんな感じかな。

    Commentコメント(0) Pageリンク元(49) Append 398
  • フラニーとゾーイー (新潮文庫)
    メディア: 文庫
    Perlプログラミング救命病棟 (Programmer’s foundations)
    作者/アーティスト: トップスタジオ,伊藤 直也
    メディア: 大型本
« 2008年03月13日 | 2008年03月15日 »

プロフィール

おおいしつかさ

Amazon商品の一覧

人気の記事ベスト10

  • 1.apache+mod_proxy_balancer+mongrelでRailsを動かす方法
  • 2.Perlでevalを使ってみる
  • 3.バージョン管理をsubversionからgitに移行してみた
  • 4.tokyobikeのドロップハンドル化
  • 5.ubuntu8.04でデュアルディスプレイを使う
  • 6.restful_authenticationを使ってみた
  • 7.URLなど、長い英字を折り返して表示する方法
  • 8.Rspecでコントローラのspecファイルを書く
  • 9.フラグメントキャッシュをRailsで使う。
  • 10.RailsとPostfixで受信メールを処理する方法

コメント

  • ユル(プログラマが若隠居をしたら)
  • ユル(風邪ひいた)
  • ユル(バイクがへたくそになっていた)
  • おおいしつかさ(便利になって不便になる)
  • 武石(便利になって不便になる)
  • ユル(劇場版 天元突破グレンラガン)
  • ユル(フラニーとゾーイー (新潮文庫): サリンジャー, 野崎 孝: 本)

過去の記事

2006年
12月
2007年
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2008年
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月

キーワード一覧

ActionScript AmazonResources git javascript kaeruspoon milook NSR Objective-C Rails Ruby Ruby on Rails subversion Thin tokyobike ubuntu VAIO VAIO typeZ Waves Xen ぐりぐり カンタロー スノボー ドトール ドライブ バイク プログラミング ユルさん 執筆 日本酒 模型 真中洋嗣 自転車

Youtube

ニコニコ動画