STUDY MEMO

学習のメモ書き

<Ruby on Rails> URLにid番号とページ情報を反映させる

routesファイルへの入力

gets "controller名/:id" => controller名.action名

controller名/:idという記載をすると、"/controller名/〜"という条件のURLが全て当てはまることになるので、 routesファイルに記載するとき、同一のcontroller名の記載のある箇所の最後にコードを記載する。

controllerファイルへの入力

def action@変数名 = モデルクラス名.find_by(id: params[:id])
end

params[:id]にはroutesファイルで取得したid番号のハッシュ番号が入っているので、id番号の取得が可能。

viewファイルへの入力

viewフォルダのコントローラ名と同じフォルダの中にhtml.erbファイルを新規作成し、

<%= @変数1.カラム名 %>

と表記することで、params[:id]で取得されたidをfind_byメソッドで取得し、取得したデータのカラムをhtmlに出力できる。
また、each文とlink_to文を使用して以下のように記述することもできる。

<% @変数1.each do |変数2| %>
<%= link_to(変数2.カラム名,"/controller名/#{変数2.id}") %>
<% end %>



<Ruby on Rails> レイアウトをサイト全体に反映させる

views/layouts/application.html.erbファイルに、サイト全体に適応させたいレイアウトをheadタグやbodyタグに入力すると、全体に情報が反映される。
下記はbody欄に全体に適応させたい情報がある場合のコード。

<!DOCTYPE html>
<html>
  <head>
  </head>

  <body>
      #反映させたい情報
      <%= yield %> 
  </body>

</html>


<%= yield %> 部分に各htmlファイルが代入される形になるので、
全てのhtmlがapplication.html.erbの一部となるということ。


<Ruby on Rails> データを表示するための設定

controllerの設定

controllerで下記のように設定する。

def アクション名
 @変数1 = モデル名.all
end



viewの設定

次にviewにcontrollerで設定した変数をeach文に使用する。

<% @変数1.each do |変数2| %>
<%= 変数2.カラム名 %>
<% end %>



<Ruby on Rails> rails consoleでの操作

rails console

ターミナル上で下記のコマンドを入力するとコンソールを起動することができる。

rails console


コンソールを起動した状態にすると、
コンソール上で四則演算やtextの代入などの操作ができるようになる。
コンソールを閉じるときは下記コマンドを使用。

quit



テーブルにデータを追加

テーブルにデータ追加をするとき、
下記のような流れで行われる。

Image from Gyazo



①newメソッドでモデルのインスタンスを生成

rails consoleで下記コマンドを入力。

変数名 = モデル名.new(カラム名:入力内容)



②テーブルにインスタンスのデータを保存

rails consoleで下記コマンドを入力。

モデル名.save



テーブルから最初のデータを取り出す

下記コマンドでテーブルの最初にあるデータを選択し、
指定カラムのデータを取り出すことができる。

変数名 = モデル名.first
変数名.カラム名



DBの全てのデータを取得する

rails consoleで下記のコマンドを入力することで変数に一覧を代入できる。

変数名 = モデル名.all


DBのレコードを指定したいときは、下記のコマンドを使用する。
また、iに0を入れると1番目のデータを、1を入れると2番目のデータを出力できる。
カラム名を入れるとそのカラムのデータだけ出力できる。

変数名.all[i].カラム名

<Ruby on Rails> テーブル作成

マイグレーションファイルの作成

マイグレーションファイルとは、データベースに変更を指示するためのファイル。
保存場所はdb/migrateの直下。
下記コマンドで作成できる。
データ型にはtext(長い文字列)などのデータ型が入る。

rails g model モデル名 カラム名:データ型


このとき同時にmodelが自動作成され、
modelsフォルダに、モデル名.rbファイルが生成される。
モデルとは、データベースを操作する特殊なクラスのことで、
ApplicationRecordを継承するクラスを指す。
初期値には下記のようなコードが記載されている。

class モデル名 < ApplicationRecord

end


データベースのカラム自動作成

下記コマンドで、マイグレーションファイルに定義されているカラムをデータベースに自動生成できる。
マイグレーションファイル生成時にid、created_at、updated_atは自動で記載される。

rails db:migrate



<Ruby on Rails> each文を記載

html内に記載する場合

headerタグの直下に配列を入力する。

<% 配列名 = [
 "文字列1",
    "文字列2"
    ]  
%>

配列を表示したい部分に下記のコードを入れる。

<% 配列名.each do |変数名| %>
<%= 変数名 %>
<% end %>



controller内に記載する場合

controller内にあるactionの中に下記のようにコードを記載。
変数名の前に@を記載することでviewでも使用できるようになる。

def action名
 @配列名 = [
 "文字列1",
    "文字列2"
    ]  
end

html内のcontrollerで設定した配列を表示したい部分に、下記のコードを入れる。

<% @配列名.each do |変数名| %>
<%= 変数名 %>
<% end %>

<Ruby on Rails> 開発準備

開発準備


開発に必要なフォルダやファイルの入った、フォルダを作成する。

rails new アプリケーション名


開発中のアプリケーションをブラウザで表示するにはサーバーを起動する必要がある。
下記コマンドを入力すると、サーバーが起動され、ブラウザでlocalhost:3000というURLにアクセスすると初期画面が表示される。

rails server



トップページの自動生成


新規webページを作成するためのコマンド。
新しいwebページが自動で作られ、localhost:3000/フォルダ名/ファイル名というURLにアクセスできるようになる。

rails generate controller フォルダ名 ファイル名



<Ruby on Rails> 画像保存場所

publicフォルダに入れておくと、htmlでは

<img src="/画像名">

CSSでは

background-image: url("/画像名");

のように画像を指定することで簡単に表示できる。
※画像名の前に必ず/(スラッシュ)を入れる。

<Ruby on Rails> view、controller、routing

Railsでページを表示するには以下の3つのファイルが必要。

view

ページの見た目を作るためのhtmlファイル。
ファイル→ファイル名.html.erb

viewでリンクを設定

以下のコードをhtml.erbのリンクにしたい部分に記載。

<a href = "/routingで設定したURL">文字列</a>


controller

ページを表示するとき、Railsの中ではcontrollerを経由してviewをブラウザに返す。

コントローラファイル→フォルダ名_controller.rb

ファイルの中に自動生成時のファイル名と同じ名前のメソッド名が追加される。
コントローラのメソッドをアクションと呼ぶ。
コントローラと同じ名前のviewフォルダの中にある、
アクション名と同じ名前のhtmlファイルを探してブラウザに返す。

class 自動生成時のフォルダ名Controller < ApplicationController
 def ファイル名 #アクション
 end
end


routing

送信されたURLに対してどのコントローラのどのアクションで処理するかを決める「対応表」のこと。
ブラウザでURLを入力すると、ルーティングがURLを見て、適切なコントローラのアクションを呼ぶ。
config/routes.rbというファイルに定義され、下記のように表記される。

Rails.application.routes.draw do
get "URL" => "コントローラー名#アクション名"
end


<例>

URL Controller action
home/top home top


上記のように設定するとブラウザから「localhost:3000/home/top」というURLが送信されたとき、
homeコントローラーのtopアクションで処理されるようになる。

Image from Gyazo

topページをlocalhost:○○○○で表示

topページをlocalhost:○○○○で表示できるようにしたい場合は下記のように記述する。

Rails.application.routes.draw do
get "/" => "コントローラー名#アクション名"
end


<Ruby> ハッシュ

配列が複数の値を並べて管理することに対して、
ハッシュはそれぞれの値にキーをつけて管理する。

{キー => 値, キー => 値}



<例>

foods = {"" => "乳製品","金額" => 20}
puts foods[""]

foods[""] = "乳製品・卵" #キー名変更
puts foods[""]

foods["産地"] = "島根" #ハッシュ追加
puts foods["産地"]


結果

Image from Gyazo

シンボル

文字列をキーの部分の先頭にコロンをつけた書き方にすることもできる。
この書き方をシンボルという。
この時シンボルは英表記にする必要がある。

foods =  {:egg => "乳製品",:price => 20}
puts foods[:egg]


結果

Image from Gyazo

ハッシュの省略

キーにシンボルを用いる時省略することができる。

<例>

foods =  {egg:"卵",price:20}
puts "#{foods[:egg]}は1個#{foods[:price]}"


結果

Image from Gyazo

nil

ハッシュから存在しないキーの値を取り出した時の何もないという値は、
nilという言葉で表される。
if文で使用される。

<Ruby> each文

配列の要素の数だけ繰り返し処理をする。 ||で囲まれた変数に配列の要素が順に入っていき、each文の中の処理が実行されていく。

配列.each do |変数名|
 #処理
end



<例>

foods = ["","アボカド","マグロ"]

foods.each do |food|
  puts "#{food}が食べたい"
end


結果

Image from Gyazo

<command line> コマンドライン一覧

コマンド 内容
touch ファイル名 ファイルの作成
cat ファイル名 ファイルの中身を表示する
mkdir ディレクトリ名 ディレクトリの作成。make directoryの略。
cd ディレクトリ名 選択したdirectoryに移動。change directoryの略。
pwd カレントディレクトリを確認
ls カレントディレクトリの中身のdirectoryとfileを確認。
cd .. 一つ親のディレクトリに移動
cd homeディレクトリに移動
mv 移動するファイル名
移動先のディレクトリ名
ファイルの移動。mvはmoveの略。
mv 移動するディレクトリ名
移動先のディレクトリ名
ディレクトリの移動。mvはmoveの略。
mv 変更前 変更後 ファイルまたはディレクトリの名称を変更。
cp コピー元ファイル名
コピー後ファイル名
ファイル名のコピー。
cp -r コピー元ディレクトリ名
コピー後ディレクトリ名
ディレクトリ名のコピー。
rm ファイル名 指定されたを削除する。
rm -r 名 ディレクトリ名 指定されたディレクトリを削除する。



フォルダとディレクト
MacWindowsではフォルダという言い方が一般的。

ディレクト
ハードディスクなどの記録メディア上のファイルの保存場所。

フォルダ
ディレクトリと同意かつ、オブジェクトの容れ物という意味。

カレントディレクト
現在開けているディレクトリ。

ルートディレクト
一番親の階層のディレクトリ。homeの親階層。/で表現される。

ホームディレクト
起点にするディレクトリ。