Ruby on Rails5 学習メモ #01
仕事でエンジニアの方々が使っている言語がRailsなのでなんとなくでも理解をできたらと思い、休みの日に少しずつProgateで学んだことのメモしていく。
個人メモなので適当です。
アプリケーション新規作成
Railsで新しいアプリケーションを作成してサーバーを起動するコマンド。
rails new アプリケーション名
rails server
新しいページを作成する
新しいページを作成するにはコントローラーとアクションを宣言。URL上だとdomain/コントローラー名/アクション名となる
rails generate controller コントローラ名 アクション名
ルーティングを変える
ブラウザでアクセスした際のルール(ルーティング)を変えるには/config/routes.rbを変更する
get "コントローラー名/アクション名" => "コントローラー#アクション"
共通部分のHTML変更
Railsではmeta部分やbodyタグ部分は、デフォルトでincludeされている。そのファイルは、/views/layouts/application.html.erbにある。
リンクの記述
html.erbファイル内でリンクを記述するには、link_toメソッドで記述する
<%= link_to("リンクタイトル", "URL") %>
モデルとマイグレーションファイルを同時に作成
モデルとデータベーステーブルを作成し、データベースに変更を反映するにはrails g modelコマンドを実行する。マイグレーションファイルの内容をデータベースに反映させるにはrails db:migrateコマンドを実行する。
rails g model テーブル名(単数形) カラム名:データ型
rails db:migrate
データベース操作のコンソール立ち上げ
データベースを操作するには、rails consoleコマンドでコンソールを立ち上げる。閉じる場合はquitコマンド。
rails console
quit
テーブルにデータをinsert
作成したデータベースにデータを追加するには以下のコマンドをrails consoleから実行する。格納した変数をsaveすると反映する。
変数 = テーブル名.new(カラム名:"追加データ")
変数.save
コントローラーでテーブルのデータをすべて取得
コントローラのアクション内の記述する場合は、テーブル内のデータをすべて取得して配列に代入。@を付けることでビューから参照できる。
@配列 = テーブル名.all
テーブルのデータをすべて取得して並び替え
テーブル名.allで特定カラムでorder byで並び替えるには:ascで昇順、:descで降順で取得できる。下記は降順。
@配列 = テーブル名.all.order(カラム名: :desc)
ビューでループしてデータを表示
コントローラーで@を付けていれば受け取れる。それをeachでループさせ変数に格納。変数.カラム名で取り出して表示する。
<% @配列.each do |変数| %>
<%= 変数.カラム名 %>
<% end %>
ルーティングを動的にする
ルーティングを動的にするには:引数にすることで動くようになる。
get "/コントローラー/:引数" => "コントローラー#アクション"
動的URLの引数をparams変数で取得
コントローラのアクション内では、ルーティングで設定したURLの「:引数」の値を取得することができます。その値はparamsという変数にハッシュとして入っている。params[:引数]とすることで、その値を取得することができます。
@変数 = params[:引数]
params変数を元にデータベースから取得
URLの「:引数」と合致するデータベースの行を取得して代入するにはfind_byを使う。
@変数 = テーブル名.find_by(カラム名:params[:引数])
Ruby基礎からRailsのここまでやったけど、PHPの時も感じたけど、やっぱりフレームワークって苦手だなぁ。あと書き方がPHPとはまあまあ違うのでむむむってなることが多い。あと、老化の所為かすぐ忘れる。
やっぱプログラムは作り続けないとものにならんだろうなぁ。とりあえず、講座の最後までやってみよう。