家計簿をつくる1日目:インデックスのmodel/controller/viewの作成
$ rails generate model Kakeibo day:date money:integer category1:string category2:string card:boolean memo:string
invoke active_record
create db/migrate/20140115154502_create_kakeibos.rb
create app/models/kakeibo.rb
invoke test_unit
create test/models/kakeibo_test.rb
create test/fixtures/kakeibos.yml
最初Kakeiboの最初が大文字で単数じゃないといけないのを忘れていて早速エラーが出た。
とりあえず以下の形でmodelを作成した。
day:date: 入力日
money:integer: 金額
category_1:string: 大項目
category_2:string: 中項目
card:boolean: 真偽値クレカかどうか
memo:string: メモ
$ rake db:migrate
== CreateKakeibos: migrating =================================================
-- create_table(:kakeibos)
-> 0.0023s
== CreateKakeibos: migrated (0.0024s) ========================================
dbをつくるところまではできた。ここまではドットインストールで見たままなので、コントローラとルーティングのところでちょっと違うところが出てくるでしょう。
$ rails generate controller Kakeibos
create app/controllers/kakeibos_controller.rb
invoke erb
create app/views/kakeibos
invoke test_unit
create test/controllers/kakeibos_controller_test.rb
invoke helper
create app/helpers/kakeibos_helper.rb
invoke test_unit
create test/helpers/kakeibos_helper_test.rb
invoke assets
invoke coffee
create app/assets/javascripts/kakeibos.js.coffee
invoke scss
create app/assets/stylesheets/kakeibos.css.scss
つづいてconfig/routes.rb のファイルに
resources :kakeibos
を追加してルーティングの設定を追加。
$ rake routes
Prefix Verb URI Pattern Controller#Action
kakeibos GET /kakeibos(.:format) kakeibos#index
POST /kakeibos(.:format) kakeibos#create
new_kakeibo GET /kakeibos/new(.:format) kakeibos#new
edit_kakeibo GET /kakeibos/:id/edit(.:format) kakeibos#edit
kakeibo GET /kakeibos/:id(.:format) kakeibos#show
PATCH /kakeibos/:id(.:format) kakeibos#update
PUT /kakeibos/:id(.:format) kakeibos#update
DELETE /kakeibos/:id(.:format) kakeibos#destroy
でルーティングの設定を設定、確認。
コントローラのアクションの作成
controllers/kakeibos_controllees.rb 内にindexを表示するためのメソッドを表示
def index
@kakeibos = Kakeibo.all
end
viewの作成
app/view/kakeibos 内に index.html.erb というファイルを作成
indexの部分はメソッド名と共通で決めになっている。
このファイルに表示する内容を書いたらもう一度サーバを起動して確認。
ちゃんと表示されているっぽいです。今日はここまでかな。
まだDBの中にデータが何も入っていないので一旦データを入れるためのページを作成します。