<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> link_toを使用したリンク作成
ruby on railsではaタグをlink_toメソッドで表すことができる。
aタグ表記の場合
<a href = "/">文字列</a>
link_toメソッド表記の場合
<%= link_to("文字列","/") %>
第一引数には文字列、第二引数にはURLが入る。
<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
テーブルにデータを追加
テーブルにデータ追加をするとき、
下記のような流れで行われる。
①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アクションで処理されるようになる。
topページをlocalhost:○○○○で表示
topページをlocalhost:○○○○で表示できるようにしたい場合は下記のように記述する。
Rails.application.routes.draw do get "/" => "コントローラー名#アクション名" end
<Ruby on Rails> 概要
Ruby on Railsは、Webアプリケーション開発のためのフレームワーク。
参考サイト
↓
medium-company.com
<Ruby> ハッシュ
配列が複数の値を並べて管理することに対して、
ハッシュはそれぞれの値にキーをつけて管理する。
{キー => 値, キー => 値}
<例>
foods = {"卵" => "乳製品","金額" => 20} puts foods["卵"] foods["卵"] = "乳製品・卵" #キー名変更 puts foods["卵"] foods["産地"] = "島根" #ハッシュ追加 puts foods["産地"]
シンボル
文字列をキーの部分の先頭にコロンをつけた書き方にすることもできる。
この書き方をシンボルという。
この時シンボルは英表記にする必要がある。
foods = {:egg => "乳製品",:price => 20} puts foods[:egg]
ハッシュの省略
キーにシンボルを用いる時省略することができる。
<例>
foods = {egg:"卵",price:20} puts "#{foods[:egg]}は1個#{foods[:price]}円"
nil
ハッシュから存在しないキーの値を取り出した時の何もないという値は、
nilという言葉で表される。
if文で使用される。
<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 名 ディレクトリ名 | 指定されたディレクトリを削除する。 |
フォルダとディレクトリ:
MacとWindowsではフォルダという言い方が一般的。
ディレクトリ:
ハードディスクなどの記録メディア上のファイルの保存場所。
フォルダ:
ディレクトリと同意かつ、オブジェクトの容れ物という意味。