Webエンジニア目指して#34
どうも無職マンです。
退職証明書類が未だ届かず、事務手続きを全て終わらせてからWebエンジニアのスクールへ臨むつもりが遅れてます。はよしてくれ〜〜〜〜〜
運動不足をなんとかしようと思って2億年振りにDDRやったんですが、全然踏めません。軟体動物が地団駄を踏むゲームになっています
そんな感じでいきまShow ProgateのRuby on Rails I !!!!!!!!!!!!!!
Webアプリケーションの生成
$ rails new application_name
ターミナルでこいつを入力すると自動で必要なディレクトリを作ってくれるらしい!行くぜうおお!
あ、$はコマンドを表す文字で、ターミナルに元々表示されるため入力は不要です
Rails入っとらんやんけ!!!!!!!
入れてきました。なにやら警告されてますが初めてRailsを始める場合は無視でいいそうなので無視します
というわけで先程のrails new
を実行すると
予想よりたくさん生成されました。これがwebアプリの土台になるわけですね。こんなん手作業で作ってられないのでRailsは偉大ですね
サーバーの起動
rails new
をしたら今度はサーバーを起動します
別途ターミナルを立ち上げて下記の通り入力
$ rails server
するとこんな表示になります。
Ctrl+Cでサーバーを閉じるまではこの窓は開きっぱなしにします。
忘れると閉じられなくなるんで回りくどい操作が必要になってしまうそうな
次にブラウザでlocalhost:3000
をアドレスバーに入力するとこんな画面が出ます。
これでサーバーが立ちました。
トップページの自動生成
$ rails generate controller home top
このコマンドを実行するとトップページが自動生成されます
メリットはまだ分かりませんがなにやら色々やってるのでただトップページを作るだけじゃないみたい
この状態でlocalhost:3000/home/top
をブラウザで開くといかにもデフォルトな感じのページが開きます
viewについて
Railsページにはview
,controller
,routing
の3ファイルが必要で、
ブラウザの要求に対してRailsはrouting
>controller
>view
の順に経由しview
を返します
view
は見た目の部分、つまりhtmlのことです
view
ファイルは下図のディレクトリに入ってます。自動生成したhome/topも入ってますね
生成したtop.html.erb
はhtmlのノリで編集できます。末尾にerbがついてますがhtmlと同じ記述らしい
controllerについて
先述の通り、Railsがブラウザにviewを返す前にcontroller
ファイルを経由してきます。さてはサーバーサイドの処理だな?
rails generate controller home top
で生成されたものの中にcontroller
と名のついた.rb拡張子のファイルがあります
これの中身がこちら
class HomeController < ApplicationController def top end end
home/topを生成したのに合わせてtop
メソッドが書かれてます
このようにcontroller
に書かれたメソッドをactionといって、
routingについて
rountingはブラウザに入力されるURLとcontroller
をリンクさせるファイルです
[viewについて]で書いた流れを細かく書くと、
1.ブラウザからの要求に対しRailsがURLとrouting
を参照
2.対応したcontroller
ファイル名とそのaction
を参照
3.そのaction
名のview
となるhtmlをブラウザに返す
って感じですね
このrouting
も自動生成されてます
その中身がこちら
Rails.application.routes.draw do get 'home/top' # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end
あれ、Progateだとget "home/top" => "home#top"
となりましたが結果が違う
ver.の違いでしょうか(Rails6.1.1)
コメントアウトに書いてあるURLへ行ってみると、どうやらURLの指定とcontroller action
が同じだと省略できるみたいです。なるほどね
ちなみに全然関係ないURLを入力したらrounting errorが出ました。 routingがうまく記述できてないとこうなるわけですね
routingの変更
controllerを呼び出すURLを変えます
Rails.application.routes.draw do get 'top'=>'home#top' end
こうするとlocalhost:3000/top
だけで呼び出せるようになります
また、下のように書いた場合はlocalhost:3000
だけで呼び出せます
Rails.application.routes.draw do get '/'=>'home#top' end
2個目以降のページの作成
home/topはrailsコマンドを使って自動生成しましたが、重複したcontrollerはコマンドが弾かれるため今まで書いたview,controller,routingファイルの自作が必要です
cssの適用
railsで下図のようにcss専用のフォルダが作られます
home.scssがhomeフォルダのview全てに適用、
application.cssが全てのviewに適用されます
適用順はapplication>homeなので重複要素があればapplicationの記述は上書きされます
railsではscssなんですね。sass覚えといて良かった〜
画像の保存場所
railsは独特な参照をするみたいで、<img src="/bnr_mini.png">
みたいな書き方をすると下図のフォルダを参照します。
別にもapp/assets/imagesに保存場所があってどっちやねん!って感じですね
参照する際は/assets/images/xxx.pngのように記述します。appがルートディレクトリになるわけですね
ちらっと調べた感じwebアプリを立ち上げたとして、ユーザーが利用する範囲のものはpublic、システム画像などであまり変化のないものはassets/imagesに置くのがいいというのを見ました
htmlリンクの設定
htmlのa
タグのリンク先にroutingのパスを記述するとその設定通りに飛ぶ
<a href="/">トップページ</a>
途中で調べることが多くて止まっちゃいましたがRails Iおわり!ではでは