webcalendar に手を入れてみる

先の実装試験な環境は残しておいて、開発作業用のナニを作成しつつログを残してみます。

以下の手順で

  • プロジェクト作成
  • DB の準備 (今回は database.yml の記述に倣って webcalendar_development と)
  • scaffold の前に model だけは作っとく (これは migrate のため)
  • migrate によりテーブルを作成
  • ./script/generate scaffold Event
  • ./script/generate controller calendar
  • 必要なファイルをナニ
    • app/helpers/calendar_helper.rb
    • app/views/layouts/application.rhtml
    • public/stylesheets/calendar.css
  • app/controllers/calendar_controller.rb 修正
  • app/views/calendar/index.rhtml 作成
  • config/routes.rb 修正および public/index.html のリネイム

で動くはず、と。migrate なナニの部分のみをロギング。

model の作成

では、作りましょう。

$ ./script/generate model event
      exists  app/models/
      exists  test/unit/
      exists  test/fixtures/
      create  app/models/event.rb
      create  test/unit/event_test.rb
      create  test/fixtures/events.yml
      create  db/migrate
      create  db/migrate/001_create_events.rb
$

ヽ( ・∀・)ノきゅまきゅまー な migration のナニは → http://wota.jp/ac/?date=20050817

で、こんな感じで良いかなぁ。

db/migrate/001_create_events.rb

class CreateEvents < ActiveRecord::Migration
  def self.up
    create_table :events do |t|
      # t.column :name, :string
      t.column :name, :string
      t.column :description, :text
      t.column :startdate, :date
    end
  end

  def self.down
    drop_table :events
  end
end

で、rake migrate して確認 (ログは略)。database.yml 直すの忘れてる && 上書き保存せずに実行した上、t.column なナニでカンマ (,) を忘れてて不具合。
動作確認 OK であれば、scaffold 作成ですな。

$ ./script/generate scaffold Event
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/events
      exists  test/functional/
  dependency  model
      exists    app/models/
      exists    test/unit/
      exists    test/fixtures/
   identical    app/models/event.rb
   identical    test/unit/event_test.rb
   identical    test/fixtures/events.yml
      create  app/views/events/_form.rhtml
      create  app/views/events/list.rhtml
      create  app/views/events/show.rhtml
      create  app/views/events/new.rhtml
      create  app/views/events/edit.rhtml
      create  app/controllers/events_controller.rb
      create  test/functional/events_controller_test.rb
      create  app/helpers/events_helper.rb
      create  app/views/layouts/events.rhtml
      create  public/stylesheets/scaffold.css
$

あとは手続き的に同じ。動作確認したら手を入れていくのですが、とりあえず何をしたモノやら。

前の月、次の月

とりあえず前後の移動はリンクに、という事で link_to を使ってみた。画像になってりゃ格好良いのでしょうが、とりあえずベータ版とゆー事で。

app/views/calendar/index.rhtml

<h1>Dynamic Calendar Example</h1>
<table noborder>
<tr><td><%= link_to 'before', { :controller => 'calendar',
                                :action => 'index',
                                :year => @year,
                                :month => @month - 1} %>
</td><td><%= link_to 'next', { :controller => 'calendar',
                                :action => 'index',
                                :year => @year,
                                :month => @month + 1} %>
</td></tr>
</table>
<%= calendar({:year => @year, :month => @month, :abbrev => (0..-1)}, &@databinder) %>

だからどうした、と言わないで下さい。ただの自己満足ッス。てか、アドレスのナニが変るのって微妙だなぁ。link_to_remote 使えんかなぁ。多分アドレスも変わらんハズ。

そういえば試験が無いな。