Ruby on Railsでコントローラーをターミナルで云々カンヌン

云々カンヌンで思い出しましたがカヌレが食べたいです。

 

それはさて置いて、Ruby on Railsでコントローラーを作成する際にターミナルで作成する方法とVSコードで直接ファイルを作る方法と何が違うのかな?って思ったので調べてみたのですがターミナルで作るとコントローラー名と同じ名前のViewのディレクトリが作成されるという事でした。

 

確かにコントローラーだけ作成してViewを作成しないという事はあまりないのでターミナルで作成した方が便利かと思います。

 

逆に言えば諸般の事情で「Viewはいらん!」とかコントローラーだけ作り直したいとかであればVSコードで直接作った方が良いのかもしれません。

 

基本の「キ」ですがターミナルでコントローラーの作成方法

 rails g controller コントローラー名

Ruby on Rails MVCとはマジでビューっと超見える

すいません。ワクチン2回目打ったせいなのかタイトルのセンスがゼロです。

 

今回はRailsにおけるMVCですが、WEBアプリケーションを作成していて一番できた感があるのはデータをViewに表示した時ではないでしょうか?

 

そこでViewにいかにして表示させるのか?についてアウトプットしたいと思います。

 

MVCとはmodelのM、ViewのV、controllerのCから成り立ちますが、WEBアプリケーションの重要な要素としてデータベースに保存できる。それを取り出し表示する事ができることです。

 

今回はビューっと言ってもいちばん基本の基本indexに表示させる方法について書いてみます。

 

基本的な方法としては

1.モデル名とコントローラー名とビューのディレクトリ名を同じする。

2.ビューのindexに表示したい場合コントローラーにdef index ~ endのメソッドを記述

3.作成したメソッドの中にインスタンスを生成するクラスをモデル名で記述する

4.クラスをインスタンス変数に代入する記述をする事でビューにデータを送る事ができる。

5.ビュー側にはデータを1つ1つ表示する為にeachメソッドを使う

6.インスタンス変数名.eachメソッドで順番通りにビューにデータを表示する事ができます。

 

ざっくり、一番簡単な方法で言うとこんなるのではないかと思います。

 

補足を加えると3の所でクラス名をモデル名にする事でモデルにあるデータベースのテーブルからデータを呼び出す事ができる。テーブルにはデータを見分ける為のカラム名ついていてビューのeachメソッドを記述する際に「ブロック変数.カラム名」と記述する事でカラムを指定したデータがデーターベースから取り出され表示されるという所までが表示されるまでの流れかと思います。

 

ここで疑問になるのはなぜテーブルとは何か?

テーブルとは一般的に言えばデータを小分けした際の「一覧表自体」のようなもの、居酒屋に行った際のあるメニュー自体がテーブルと言われたいて「飲みのも」「おつまみ」などがカラム名スーパードライ黒ラベルがデータ。もつ煮込みやネギマがデータです。

 

テーブルだけ必要であればモデルはいらないのではないか?っと思ってしまうのですが、モデルがある事で「スーパードライ」を「スーパーカッコイイキレニガ味ビール」なんて長い名前をつけるのを禁止にする設定ができたり、違うメニューとの関連性を記述する事で「Aが焼いた」「焼き鳥」と「Bさんが焼いた」「焼き鳥」というように関連つけたデータにビューに表示させる事ができます。

 

ここで疑問になるのがデータを個別にAのカラムのA-2だけ表示させたいとかはないのか?

 

あるにはあるけどないにはないです、見る側からすればデーター内部を見てこのデーターが欲しいとはならず、まずデータを選ぶ為の一覧が見たい、見せたいのが江戸の花。江戸の粋ってもんで、まずは主にindexに一覧をゴロージローを見ていただき、その中から選んだ内容の詳細ををコントローラーのshowメソッドで小細をする事で希望のデータをみる事ができますが

 

それはまた別のお話。

Rubyの論理演算子と比較演算子二人は仲良しではなくややこし

今回はRubyにまつわる論理演算子と比較演算子について

 

プログラミングでみんな挫折する理由の一つとして、似て非なるものやお前があいつであいつがそいつでドイツでオランダでサファリパーク!

 

というように結果ややこしくなる事が多いです。クラスとインスタンスインスタンス変数にクラスメソッド、インスタンスメソッド、インスタンスの生成にはクラス名.newとか似たようでちょっと違う名前が目白押しで目黒通りまで並んでいますとまでいうと大袈裟ですが、その中でも私が特にごっちゃになるのは「論理演算子」と「比較演算子」なので覚える為にアウトプットします。

 

あれはまだ日本が高度成長期まっただ中の頃です。っと昔語りをしたくなりますがそうではなくまずは論理演算子は覚えるのは3つだけ!

 

&&と||と!

 

アンドアンドと棒二つ、ビックリの3つだけシンプルすぎて間違えやすいですが、冷静に考えると&&は「共に生きよう」だし||は間に挟んだどっちかが有りなら有りでしょ?だし!はその後に続くが嘘なら本当だし本当なら嘘だしまさにビックリだし、どこにも「比較」な演算では確かにない。

 

言い換えれば&&は同じじゃなきゃダメ(False)

||はどっちかどっちも正しくなきゃダメ(同上)

!だけは右なら左、左なら右、上なら下見合いに逆ベクトルって事

 

続いて比較演算子は覚えるのは6つ、おそ松君(さん)みたいなものです。だから誰が誰か分からないってのも有りますが

 

長男の「ヒトシ」 ==

次男の「ヒトシクナイシ」 !=

三男の「チイサイシ」 <

四男の「オオキイシ」 >

五男の「イカデアル」 <=

六男の「イジョウデアル」 >=

 

長男以外は無理やりですがAとBが同じは=ではなく==

AとBが違う時に正解(真(true))は!をつけた=で!=

大なり小なりはお馴染みでAを含めたそれ以下が<に=をつける

Aを含めた以上が>に=にをつけるとなります。

 

6つを3つグループに分けて考えて、=が着くのがうち2つ。1つが=主体、もう1つが大なり小なり主体に=と覚えれば覚える事ができるでしょうか?

 

いずれにせよややこしいけど、論理演算子も比較演算子もその中の内容もたった9個、覚えて整理できていればプログラミングの知識としてグッと楽になるはず

 

 

 

新バンドDOM始動

タイトル詐欺ですごめんない。

 

バンドなんか始動しないですし僕が青春時代を過ごした90年代と違い今はDTMやボカロ時代なので作曲する人と歌う人のユニットが主流でしょうか?ミスチルGLAYウルフルズの区別はつきますがヨルシカ、YOASOBI、夜の本気ダンスとかもはや誰が誰だか、オフィシャル髭ダンディズムとか...と余談がブログが埋まってしまいそうなのでこの辺にして今回はJavaScriptのアウトプットです。

 

DOM(ドキュメント・オブジェクト・モデル)

DOMとはHTMLを解析しデータを作成する仕組みです。覚えれば大変便利です。

今回はその中での「まずは」の部分HTMLを取得する方法のアウトプットです。

 

 

JavaScriptの最重要部分であり最も特徴的な部分としてはHTMLやCSSを取得し置き換える、一時的に変更する事です。

 

その中で最初に覚えておかなくていけない事としてHTMLの取得かと思います。

  1.  cssのクラス名から取得
  2. セレクタ名から取得
  3. そしてid名からの取得

以上の3つとなります。

--------------------------------------------------------------------------------------

1.クラス名はHTMLに設定する事でCSSと連携し対象クラス名だけをCSSで装飾できる記述で主にViewに記述されており、それを読み取るという仕組みわ分かりやすい。取得方法は

 

getElementsByClassName("class名")となします。

---------------------------------------------------------------------------------------

2.セレクタ名は<body></body>や<p></p>などcssを適用させる為のHTML要素です。

HTML要素はbodyならブラウザ表示部分、pは段落です。これらのセレクタの情報を取得する方法が

 

document.querySelectorAll ("セレクタ名")となります。

 

---------------------------------------------------------------------------------------

3.id名から取得。HTMLの要素に記述する事ができるid名。その情報を取得する事ができる。イメージ的にはJavaScriptの為にHTMLの要素にidを組み込んでおき、その情報を取得する。自作自演のような感じですが、理解すれば最も分かりやす取得方法かと思います。

document.getElementById("id名")

 

---------------------------------------------------------------------------------------

取得したHTMLをどうのこうのするという事についてはまだアウトプットできる程理解はできていません。引き続き頑張ります。

ゼロから始まる異世界「添字」

昨今世間様では異世界転生をテーマにしたライトノベルや漫画があるようです。

 

私ももう年齢的に追いついていけないのですがアニメ位はチラリとガン見しています。

 

という事で今回のアウトプットは配列に「あらかじめきられた恋人たち」ならぬあらかじめ決められた添字です。

 

結構この「添字」という言葉が出てのない

 

配列は例えば

fruits = [apple,orange,melon,tikuwabu]

などとあった場合

fruits = [apple,orange,melon,tikuwabu]

     0        1            2            3        

 

と配列の中のデータ(値)対して割り当てられた番号です。

ゼロから始まるのがミソでしてイチから始まらないのがプログラミングっぽくてよだれが出てしまいます。

 

この添字がある事で配列のどれを取り出すか?っが実現するのですね。

 

例えば配列からappleを取り出したい時は

fruits[0]とするappleが出てきます。

 

ちゃんと書くとこんな感じ

fruits = ["apple","orange","melon"]

puts fruits[0] =>apple

 

日本語で表現すると

フルーツ = 配列["リンゴ","オレンジ","メロン"]

出力 フルーツ[ゼロ] => リンゴ

 

 

 

 

Rubyとif文と時々Rails

Rubyの基礎の最初の方で覚えさせられるのはif文。条件分岐です。

 

これを覚える為にざっと比較演算子や真偽値(trueとfalse二人はライバル)みたいななんやかんやありますがそれはざっと省いで以下が基本の条件分岐の説明です。

------------------

変数=1

if 変数 = 1 

 puts "1です" が出力される

#変数と条件式が同じなので成立(つまり真つまり、ture)

end

------------------

上記の式にelseを足します。elseそれは希望の光ではなく、条件不成立の時に処理をするという事ができます。

 

------------------

変数 =1

if 変数 = 2

 puts "2です"

else

 puts "2じゃないです。何を変数に入れたのですか?"

1なので2じゃなかった!(つまり偽、つまりfalse)

end

-------------------

 

この間にelsifをこれじゃないけど、これだったらを分岐させる事ができて理屈っぽく出来ますがその話も分かりにくくなるので割愛します。

 

さて、こんな条件分岐が実際にどういった暮らしに役立っているのか?その一部をご紹介!というかアプリ制作の学習で習っただけなのですが

 

主にRuby on Railsのコントローラーやビューなので使いました。ビューの方は更に論理な演算子を使いますのでやややのややこしくなるだけなので割愛

 

コントローラーでデータベースに保存出来たか(真)出来ないか(偽)で移動するビューファイルを分ける時に使いました。

  def create  
    @item = Item.new(create_params)
  if @item.save
     redirect_to root_path
   else
     render :new
    end
  end

 

以上のようにif文を使い、データが保存出来たらトップページ(root_path)へ移動

保存できなかったら:new(新規登録のページに戻す(細かく書けば色々ありあますが)という分岐としてよく使いました。

 

条件成立しない時にelse(偽)で元のページに戻すという点は可読性としてもまあまあ分かりやすいと思います。

 

以上本日のアプトプットでした。

 

 

 

 

Ruby基本のキ「timesメソッド」

今回のアウトプットはtimesメソッドです。

 

そもそもメソッドをメソットと言いかけてしまうメソメソした男ですがそれは親父ギャグなのでさておいて

 

Rubyで指定した回数同じ作業を繰り返す事ができるメソッドがtimesメソッドです。

 

基本の型は以下のようになっていますが|i|の部分はブロック変数というそうですが

省略したり無視しても繰り返し処理はしてくれます。

繰り返したい数.times do |i|
繰り返したい何か
end

 

例えば以下のように記述したとします。

5.times do
puts "コンニチハ"
end

 

これをターミナルで出力すると5回も

コンニチハ

コンニチハ

コンニチハ

コンニチハ

コンニチハ

と言ってくれます。