改めまして、技術ブログとして再開していきます・・・

他のブログに移行する可能性もございますが・・・

少しずつアウトプットできるようになりたいので・・・

 

まだSEになってから一年にもなっていないため発信する情報は弱いと思いますが、

できるだけ新しい技術に取り組んでいきます。

 

salesforce

Flutter

やホームページ関係について特化してやっていこうと思います。

 

.idと_id 違いについて ruby rails ルーティングのネスト 親子関係

〇〇.idでしかうまくいかない時と〇〇_idでしかうまくいかない時ありますよね

一度は学習したんですがふと疑問に思い説明できなかったので自分の解釈で説明してみます。

 

まず基本は〇〇.idなど「.」を使うことで解決できます。

ではなぜ〇〇_idのような時が発生するんでしょうか?

 

それはルーティングのネストにあります。

ルーティングにおけるネスト(親子関係を示す)とは、コントローラーのルーティングの中に、別のコントローラーのルーティングを記述することです。

 

f:id:iggy-neko:20211130180649p:plain

こうなると「 _ 」が発生してしまいます。

itemsの中にordersがいますよね、これで親がitems 子がorders になります。

なぜかというと、

 

f:id:iggy-neko:20211130180934p:plain

大きくできないので虫眼鏡使ってください笑

 

真ん中にいますよね「 _ 」が!!!こいつのせいなんです。

ここで決められているんです!

この場合 :item_id としなければ値を取得できません。

つまりルーティングのネスト(親子関係)によって「 _ 」が生まれ

子が親のidを受け取るためには「 _ 」を使う必要があるのです。

 

じゃーネストなんかしないでいいじゃん

 

と思いますよね。

 

ルーティングをネストさせる一番の理由は、アソシエーション先のレコードのidを

paramsに追加してコントローラーに送るためです。

つまりどうアソシエーションするかで決まってしまってるんです。

 

偉そうにまとめましたが初めて見たような気持ちで復習してます。

間違っていたら何かこうした方がいいなど指摘してください。

 

商品のデータがない時にサンプルサンプル画像を出したい 条件分岐 ruby インスタンス変数

f:id:iggy-neko:20211130163730p:plain

コントローラー

f:id:iggy-neko:20211130163816p:plain

ビュー

こうして@items がない時にサンプル画像を表示させようとしたのですが、

全く反映されていません。。。

エラーは出ないので@items が認識はされているみたいですね。

 

エラーが出ないのが一番困ります。

binding.pryで止めて@itemsがどうなってるのか確認してみました。

f:id:iggy-neko:20211130164607p:plain

ターミナル

@itemsと打つと  というのが返ってきてますね。。。

@items[0]と打つと nil が返ってきます。これが欲しかったアイデアでした!

@items.lengthと打つと 0 が表示されます。

 

@itemsと定義したものは、データが一個も入っていない状態でも  というデータが入ってる。

データが入ってるので !@items が使えない

f:id:iggy-neko:20211130165321p:plain

f:id:iggy-neko:20211130165338p:plain

などの条件式を使うことで私の認識でのデータを条件分岐できることができました。

 

画像が見づらいのは今後良くしていきます笑

 

・@itemsというインスタンス変数という箱、にItem.allと値が詰め込まれている。

・箱に条件をかけたので思うようにいかなかった。

・値があるかどうかなので、「データが」などの言葉で考えるとつまずくことが増える。

 

閃いた時はすごくテンションが上がりました。

エラーにつまずきすぎるのはメンタルに良くないので質問投稿サイトも使っていきたい

 

 

デプロイ後エラー、その後localhostもエラー

原因は結局のところよくわからないのですが、

 

調べたところ

 

localhostでは動いているがデプロイ後エラーが出ている人がいました。

その場合は

 

・閲覧履歴データの削除・キャッシュ・Cookieを削除する

 

と良いみたいです。

 

キャッシュの消し方↓

Chromeの場合

  1. パソコンで Chrome を開きます。
  2. 画面右上のその他アイコン その他 をクリックします。
  3. [その他のツール次に [閲覧履歴を消去] をクリックします。
  4. 上部で期間を選択します。すべて削除するには、[全期間] を選択します。
  5. [Cookie と他のサイトデータ] と [キャッシュされた画像とファイル] の横にあるチェックボックスをオンにします。
  6. [データを消去] をクリックします。

 

ブラウザなどを利用すると、ウェブサイトの情報がキャッシュやCookieに保存される。

キャッシュやCookieなどを消去すると、サイトの読み込みや表示形式に関する問題の一部が解決することがある。

 

 

私の場合は、エラーが読み込まれずにテストなどをクリアし、デプロイ時に再度読み込まれエラーが発覚したのかもしれません。

事例がなかったので一応書いておきます。

しょうもない奇跡を起こしてしまったのかもしれません。。。

ruby ハッシュ 基礎を復習

ハッシュの中身は

 

hash = { キー:値 }

 

hash = {key:value}

 

です。

 

中にいくつかのキーと値があるとして

 

hash = {key1:value1,key2:value2,key3:value3}

 

それらをオブジェクト.keysつまりこの場合では、puts hash.keysで

 

key1

key2

key3

と出力されます。

 

valueにもあり、puts hash.valuesで

 

value1

value2

value3

 出力されます。