NOTO

家計簿をつくる1日目:インデックスのmodel/controller/viewの作成

 Date:2014-01-16 01:16:05 +0900
 Categories: TECHNOLOGY
$ 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の中にデータが何も入っていないので一旦データを入れるためのページを作成します。
Tweet