【ruby on rails】MVCモデルの俺的まとめ

文字化け RubyOnRails
記事内に広告が含まれています。

ruby on railsのお勉強をして焼く2ヶ月、やっとMVCとか分かってきたのでまとめてみます。あ、しめさばです。

詳しい人からみたら全然違うかもしれませんが、まぁ理解の整理ということでね。

MVCモデルとは

Webアプリケーション等のプログラムで、データのやり取りや操作の流れをについて、それぞれ役割を分けて管理しようというモデルで、具体的には

Model
DB関連の処理を担当

View
画面表示(HTML)を担当

Controller
ユーザーのリクエストの受付、レスポンス返却

というように役割ごとの記述を行い、全体的な管理のしやすさを担保する仕組みという感じでしょうか。

処理の流れ

ユーザーからURL等のリクエストを受け取ったらまずは

Router

というところで、どのviewでどのcontrollerのアクションを実行すべきかという事を割当処理を実行する。

だから、『MVCモデル+ルーティング』というのが本当は適切なんじゃないかなぁと思ったり

ルーターによって、アクションを呼び出す、そこで使っているデータについてModelを通してDBにアクセスして、必要な情報をControllerに返す。

帰ってきた情報をControllerからViewに渡して、画面表示をする(HTML)。

Railsの命名規則

クラス名:キャメルケース(スペース無し、大文字と小文字)
それ以外:スネークケース(スペース部分をアンダーバーで代用)

例外として定数は全て大文字で表現

routes.rbの書き方

RubyOnRailsで開発をする時、『まずはルーティング』を設定する。

※routes.rbはconfig下にあります。

Rails.applocation.routes.drow do
# ここからendまでがrouting

  get '/', to: 'top#index'

end

となっている時

get → HTTPメソッドで、getとかpostのそれ

‘/’ → 指定のURL

to以下 → controllerのアクション指定
今回は’top#index’なので、topコントローラーのindexアクションを指定するということ。

つまり、ルートディレクトリを指定されたら、topコントローラーの中にあるindexアクションの指定通り、DBのデータを確認してね。ってこと。

次はcontroller

contorollerファイルの場所は

app > controllers の中にあります。

今回の場合は『topコントローラーのindexアクション』なので

app > controllers > top_controller.rb

※ファイルを生成するときは
rails generate controller うんぬん
みたいなコマンド入力が必要だけど割愛。

class TopControkker < ActionController::Base
  # ↓これが『topコントローラーのindexアクション』
  def index
  end
end

次はview

viewファイルの場所は

app > views の中にあって

今回の場合は『topコントローラーのindexアクション』を呼び出しているので

app > vies > top > index.html.erb

※ touch コマンドで作る方法は割愛

<h1>Hello</h1>

これで一応、ブラウザに『Hello』とだけ表示されるものが完成する。

※dbの呼び出しをしていないのでmodelは不要

modelをデータに接続してみる

接続設定は

config > database.yml

で行うが今回はsqlite3を使うのでいじる必要無し

modelを作成する

コマンドは

rails g model User name:string age:integer

でUserというDBを作成しnameとageのカラムを生成する。

そうすると

migrateファイル(テーブル構成を定義する)
modelファイル(dbを操作するためのファイル)

が出来る。

次に、作ったファイルをもとにをsqlite3にdbを生成する。

コマンドは

rails db:create

次にテーブルにmigrateファイルを元にdbに反映する

コマンドは

rails db:migrate

※dbそのものは『users』と複数形で生成される点に注意

modelファイルの使い方

ファイルの場所は

app > models >users.rb

ファイルの中身はこんな感じ

class User < ApplicationRecord
end

※継承元のActiveRecordはrubyのコマンドでsqlを動かすコマンドに変換するものとおぼえておく。

ユーザー情報をviewに表示させる

まずルーティングを変更する

Rails.applocation.routes.drow do
# ここからendまでがrouting

  get '/', to: 'top#index'

  get '/users/:id', to: 'users#show', as: "user"

end

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

class UsersController < ActionController::Base
  def show
    @user = User.find(params["id"])
  end
end

ルーティングで設定している

‘/users/:id’ の :id の変数を受け取るには
params[“id”]
で指定する。

だからuserモデルのidを受け取るのは

User.find(params[“id”])

そしてviewに変数を渡す時は@をつけて

@user という変数に渡す。

※app > vies > user > show.html.erb

<h1>ユーザー詳細,/h1>

<%= @user.name %><br>
<%= @user.age %>才

rubyのコードをhtmlに記入する時は

<% %> 画面に表示されない
<%= %> 画面に表示される

で挟んで使う。

こんな感じ。

コメント

タイトルとURLをコピーしました