SInatraでブックマークアプリっぽいものを作ってみるテストその2。
MVC編。


sequelは直接SQLを叩いたりもできるが、やっぱりMVCっぽくしたいので以下のようにする。

Sequel::Model.plugin(:schema)
Sequel.connect('sqlite://database.db')
class Items < Sequel::Model
  unless table_exists?
    set_schema do
      primary_key :id
      string :url
      timestamp :created_at
    end
    create_table
  end
end
[/ruby]
これで初回に起動すれば、スキーマ通りにDBが作成される。
URLの設計は大したことしてないので略。
コントローラの実装はこんな感じ。
[ruby]
get '/' do
  @items = Items.order_by(:id.desc).limit(20)
  erb :index
end
[/ruby]
説明不要なくらい分かりやすい。パラメータを取る場合はこう。
[ruby]
get '/:id' do
  @item = Items.find(:id => params[:id])
  erb :show
end

POSTで受け取ってエントリを作成し(いわゆるCRUDのC)、/に飛ばすなら 

post '/add' do
  Items.create(params)
  redirect '/', 303
end

これだけ。

次にMVCのV。
慣れているからerbにしたものの、Railsのerbのように<%=hとか-%>みたいな拡張は使えないので注意。
レイアウトを使う場合には、layout.erbというファイルを用意してガワを書き、actionごとのviewが入る部分に<%= yield %>を挿入すればOK。
ヘルパメソッドを追加するなら、

helpers do
  def timeform(time)
    time.strftime("%Y/%m/%d %H:%M:%S")
  end
end

のように定義しておけば、全てのテンプレート内で使える。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>