Ruby on Rails5 Progate Ⅰ
Ruby on Railsとは
Webアプリケーション開発に必要なフレームワーク(開発に必要な工数を減らす事ができる)
コマンドライン
・$ rails new Tweet_app(作成するアプリ名)
//Ruby on Rilsでの開発の基礎項目を自動生成する事ができる。
・$ rails server (新規ウィンドウ)
//ローカルホストサーバを立ち上げる。localhost:3000でアクセス可能。
・$ rails generate controller コントローラ名(home) アクション名(top)
$ rails generate controller home top
// トップページを生成する。localhost:3000/home/top
ページ作成に必要なもの
・view ・・・見た目を作るためのHTMLファイル(〜.erbで生成される)
・controller ・・・controllerを経由してブラウザにviewを返している。
・routing ・・・controllerとブラウザをつなぐ。
(routing→controller→view)
controller
rails generate controller home top 実行の際にhome_controller.rb(controllerファイル)が生成され、ファイルの中にtopメソッド(アクション)が追加されている。
home=コントローラ名 top=アクション名
[home_controller.rb]
class HomeController < ApplicationController
def top (*アクション)
end
end
アクションは、コントローラと同じ名前のビューフォルダから、アクション(top)と同じ名前のHTMLファイルを探してブラウザに表示する。
routing
送信されたURLに対して「どのコントローラの、どのアクション」で処理するかを決める「対応表」
「config/routes.rb」に定義される
「get "URL" => "コントローラー名#アクション名"」
ex.)
get "home/top" => "home#top"
=ブラウザでlocalhost:3000/home/topを実行時、
homeコントローラーのtopアクションで処理
routingの変更
routingを書き換えるとトップページのurlを変更する事ができる。
[routes.rb]
get "home/top" => "home#top"
// localhost:3000/top でhome/top.html.erb にアクセス可
新しいページを作成する場合
(*アクション名が同じ場合コマンドでは追加できない)
・[routes.rb] 内に直接
get "URL" => "コントローラー名#アクション名"を追加する
[routes.rb]
get "top" => "home#top"
get "about" => "home#about"
//(URLで「localhost:3000/about」= aboutアクションにアクセス)
[home_controller.rb]
def top
end
def about //(上記URL指定の際に about.html.erbにアクセス)
end
・viewファイルを追加(直接vire/homeフォルダへアクセスして右クリックで)
レイアウトの整頓(SCSS)
SCSSで行う(controllerコマンド実行後にstylesheetフォルダと一緒に自動生成されてる)
画像の挿入
画像データは基本的にpublicフォルダ内に保存。
画像データを読み込む際に、ulrの最初に「/(スラッシュ)」で万事OK
トップページを指定したい(localhost:3000のみで表示されるページ)
[routes.rb]内の、トップにしたいファイル名を「/」に変える。
[routes.rb]
get "/" = "home#top"
各ページからのリンク作成
<a>タグに記述するurl の最初に「/」で万事OK
*指定するurlは[routes.rb]と同じにする。