Yuki Matsumoto

To be engneer soon / Ruby on Rails

コントローラーとモデルの作成

2019-02-15 Yuki MatsumotoRuby on Rails

コントローラーを作成する

まずは昨日の続きでコントローラーを作っていくところから始めます。

まずはコントローラーを作成する

bundler exec rails g controller ideas index show new edit

これを実行するとRailsの命名規則の元、適切なタイトルと場所にファイルとディレクトリが自動生成されます。とりあえずindex, show, new, editを作成しました。おそらくdestroyなども必要になりそうですが、あとあと追加していきます。

作成されるファイル:

app -> controllers -> ideas_controller.rb

app -> views -> edit.html.erb, index.html.erb, new.html.erb, show.html.erb

モデルを作成する

次にmodelを作成していきます。

まず以下のコマンドでmodelを作成する。

bundler exec rails g model idea title:string content:text

これでideaに属するtitlecontentのカラムを作成することができました。

作成されたファイル:

app -> models -> idea.rb

db -> migrate -> 20190214133513_create_ideas.rb

そして、以下のコマンドでテーブルを作成する。

bundler exec rails db:migrate

ideasテーブルが作成されたことがコンソールから確認できる。

== 20190214133513 CreateIdeas: migrating ======================================
-- create_table(:ideas)
   -> 0.0016s
== 20190214133513 CreateIdeas: migrated (0.0017s) =============================

ちなみにbundler exec rails db:migrateを実行すると、schema.rbが作成されます。これはマイグレーションファイルの実行で作成されたデータベースの構造を表してます。

ActiveRecord::Schema.define(version: 2019_02_14_133513) do

  create_table "ideas", force: :cascade do |t|
    t.string "title"
    t.text "content"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

end

viewを確認する(おまけ)

最後にindexページのviewを確認してみようと思います。 実はviewはcontrollerを作成した時に生成されています。

場所はapp -> views -> ideas -> index.html.erb

中身はこんな感じ

<h1>Ideas#index</h1>
<p>Find me in app/views/ideas/index.html.erb</p>

まずは以下のコマンドでRials serverを実行する

bundler exec rails server

http://0.0.0.0:3000にアクセス

Rails serverが立ち上がってることを確認したら/ideas/indexのパスを指定する

image

こんな感じで表示されたら成功

今日はコントローラーとモデルを作成してみた。明日はるrootメソッドとindexページを作成していく予定です。