仕切りに、「え??パスが違うんじゃないの?本当はこれでしょ?」とか誘導してくる問題

仕切りに、「え??パスが違うんじゃないの?本当はこれでしょ?」とか誘導してくる問題

 

 

これには時間割きました。

 

f:id:momonga0714:20200401201028p:plain



 

 

今回の実装問題は、

表題に、今現在みているグループ名を表示するという実装に取り組んだ。

 

 

これを実装しないと、グループ一覧が全て表示されることになってしまう

という面倒な問題があった。

 

そこで、まず仮説としてたてられるのは、

 

「グループ詳細ページとして作成してしまって、

他のページとアソシエーションでくっつけてしまうということ。

 

そこで、groupコントローラーでshowアクションを定義し、

 showページの作成を行った。

 

ここで、詳細ページの目的部分についてはすぐに表示することができたが、

それだけだと、真っ白な状態。。

 

 

f:id:momonga0714:20200401201050p:plain

 

 

 

 

 

こんな状態

 

次に、考え方としては、

 

左側と、中央の部分を表示したい。

 

じゃあ、今まで作ったやつとアソシエーションして

くっつけよう!

 

 

と思ったのはいいのだけれど、、、

 

上記の様に、え?これでいいの??

と促してくる。。

 

この誘導に耐え、

自分の道を突き進んだ

 

 

何が差し違えていたかというと

 

自分がしたかったことは

 

 

group GET    /groups/:id(.:format)                groups#show

 

このルーティングを作ったので、これを使いたかった。

こうすることで、groupの「詳細ページ」を作ることができ、show

アクションをもってコードを書いていけるので、目的を達成できると考えていたから。

 

一方、相手さんは

 

group_messages GET    /groups/:group_id/messages(.:format) messages#index

 

こっちに誘導してくる。

最初なんでこっちにばっかり誘導してくるのかさっぱりわからない。。

 

いろいろ弄った。

Haml側に問題があるのか?

検索 →  form-forの書き方の復習

問題なさそう

@group,@message、これがコントローラー上でうまく定義できていないのか?

いじいじ、

レスポンス変わらず。。。。

 

無駄に、_show.html.hamlとかいう部分テンプレート作って、無理やりくっつけようとしたけど、全くエラー内容変わらず、、(苦労を返してくれ笑)

 

そして、考えるに考え抜いて、

 

「ここまで来たら、一旦原点に立ち返ろう」

 

 

ということで、routesチェック!

 

あっ!!!

 

 

 

 

f:id:momonga0714:20200401201117p:plain

 

私は気づいてしまいまいた。。

 

なんとmessagesテーブルにshowアクションが入っていないのです、、

 

これだけでした。笑

 

 

だから、仕切りに「大丈夫?ちがうんじゃない?こっちなんじゃない?」

と教えてくれていたのです!

 

ひとまずよかった。

次に、また問題が発生しているんので解決したいと思います🤔

メッセージを投稿しても保存されない問題 [rails]

メッセージを投稿しても保存されない問題

 

 

めっせーじを投稿しても、保存がされない

 

原因は、クリエイトアクションの

Paramsが原因だと考えられるが

 

どの様に発生しているのかが不明。

 

調査が必要かと思われる。

が時間が来てしまったので今日は一旦終了する。

 

確か、アワーブログか、ピックツイートに

例題があった気がするので

確認して

検証してみよう。

 

 

 

解決

 

まず、モデルのアソシエーションのところが

 

belongs-to groups

 

になっていた。 groupにはsいらない。

 

これで昨日ぶち当たっていたエラーは解決笑

 

f:id:momonga0714:20200401200629p:plain

 

エラー画面は出ないが、この様に、

Createアクションのなかで条件分岐している

保存されなかった場合のレスポンスが返ってくる。

 

 

次に立て続けにエラーが発生

 

f:id:momonga0714:20200401200648p:plain




 

 

保存が成功して、

(実際に「メッセージが投稿されました」という成功画面とDB上でも確認)

この画面が表示された。

 

?? 本当であれば、右側に投稿メッセージ一覧が表示されているはずなのだが。。

 

気になって、グループのTECH::CAMP(旧:TECH:EXPERT)をクリックした。

 

すると、、

 

 

 

 

f:id:momonga0714:20200401200730p:plain

 

 

 

 

 

 

 

こんなエラーが。。😅

 

どうやら、部分テンプレートを表示するのに失敗したらしい。。

 

 

= render partial: 'message', collection: @messages

 

 

と変えてみてうまくいかない。。

 

ので!ここは王道パターン!

部分テンプレートのファイル名が間違っていることを検討すると。。

 

案の定😅

 

_messages.html.haml となっておりました

 

これもsはいらないので

 

_message.html.haml

 

 

と変更しました。

 

すると

 

 

 

 

f:id:momonga0714:20200401200804p:plain

 

 

 

無事成功しました😅

 

実は、あと部分テンプレートのインデントの記載ミスもあったので

そこでもエラーが発生していました。。

 

ただ、ここはそんなに難しくなく、

大体、Hamlでのエラーで

Haml::SyntaxError

 

となった場合はまず、インデントを疑うことで今のところ大体解決

しそうだなという印象です🤔

 

あとは、この上部の

全部表示されてしまう現象を解決したいと思います笑

rails g model (モデル名) を実行するとき忘れちゃいけないこと

毎日作業お疲れ様です!

 

プログラミングにはいろんな可能性があって本当におもしろいですね😳

仕事にしていきたいと思って始めた人もいれば、

単純に私みたいに好奇心から始めた方もいらっしゃると思いますが、

いずれにせよみなさんゴールは

 

「プログラミングうまくなりたいっ!」

 

という目的は一緒だと思いますし、

Twitterとかスクールで同士が頑張っている姿を見ると

とても励みになります😌

 

さて、今日はモデルについて備忘録的な意味合いで、

保存しておこうと思いますので、

もし、ご参考にされる方もいらっしゃれば幸いです♩

 

モデルを作る際にはデータベースを設計する上でも

重要な役割をもちます。

そこで、意識しておきたいものは

カラムです。

どんなカラムを作成するかというのが結構大事ですよね〜🤔

 

今回は型を一覧になっているものがあったので

はっつけときますね〜

参考記事も貼っておきます。

 

それでは本日も1日よろしくお願いします😌

 

f:id:momonga0714:20200331133409p:plain

モデル 〜カラムの型〜

 

参考記事

https://qiita.com/s_tatsuki/items/900d662a905c7e36b3d4

flashオブジェクト

flashオブジェクト

 

 

 

これは、deviseに内蔵されているキーとバリューを

呼び出すことができます。

ハッシュの様に、キーとバリューで保存されています。

 

 

それを、flashオブジェクトを使うことで

中身に格納されます。

 

 

f:id:momonga0714:20200330201707p:plain



 

中身はこんな感じです。

 

これを取り出すには、each文を使うと全て取り出すことができ、

取りだすものをそれ以下の文で選択することができるというわけですね。

 

 

f:id:momonga0714:20200330201723p:plain

 

せっかくdeviseを使うなら、使用するとわかりやすく、よりすこしはかっこよくなるので

使っていきたいと思います!

 

 

 

 

 

Includesメソッドについて

 

 

 

n+1問題で話題にあがるメソッドです。

 

テーブル間の情報をidをマッチングさせて

取り出せる方法で、

処理が軽く、処理速度の問題などにも

メリットがあります。

 

これは、当たり前だったのですが、気付けなかったことで、

これを使うにはアソシエーションの設定をやっておかないといけないことです。

 

これをやらないと、アソシエーションエラーが

発生してしまいますので注意しましょう

 

【rails】 エラーで悩んだときに見返して欲しい便利ツール!【rails error プログラミング】

【エラーが出たときの対処法】

 

Rails やってるとエラーはつきもの。

エラー画面で丁寧に 「どこでエラー起きてるよ〜」

とか教えてくれるけど 厳密には全然そこじゃなかったりするわけです。。。

エラーが起きた場所は教えてくれるけど、

原因までは教えてくれないのがrailsさんです🙄

 

そこで、便利だというアプリを見つけました!

(全然使いこなせてないけど。。)

 

それが、better_errors というデバックアプリです。

 

Gemfileから取り入れることができます。

 

何がすごいなあと思ったかというと、

 

「エラーが出るまでの経過がわかる」 というのです。

 

今までは、 「どこでエラーが発生しているよ」 ということで終わっておりましたが、

 

 これで圧倒的に情報量が増えます。!

 

 

まだ、全然使いきれてないですが、素人でも便利そうだなってわかります🤔

 

ぜひ、使いこなすことができる様になりたいですね。

 

 

 

参考記事 【Rails】better_errorsとbinding_of_callerで自分でエラーを解決できるようになろう【初心者向け】

https://qiita.com/ryokky59/items/284892be879996e4f77c

 

参考動画

プログラミング初心者歓迎!「エラーが出ました。どうすればいいですか?」から卒業するための基本と極意

 

https://youtu.be/5fyrGslhUcY

NoMethodError in Posts#index 'icon'  (haml scss エラー)

お疲れ様です。

2時間戦ったエラーが人に聞いたら一瞬で解決したのでちょっとこの感動と悔しさが無くならないうちに書いときます。

 

先ほどからこんなエラーと戦ってました。

 

f:id:momonga0714:20200326155107p:plain

 

Hamlに、Font Awesome使ってアイコンを入れ込もうとしていたのですが、

なぜか、手筈を踏んでもどうやってもいくら検証と仮説を繰り返しても

どう考えても、どう検索しても解決しなくて悩んでました。

その時間なんと2時間😂

 

そこで満を辞して詳しい人に電話。

わたし「もしもし。これここうでー、スクショみてみてもらえますかー??これとこれやってて、あらゆるエラーの可能性は潰せているはずなんですよね〜(2時間かけて)」

 

かみさま「あー、なるほど。えっとー、一回ローカルサーバー再起動してもらえますかー??」

 

わたし「え??あー。はい」

 

(素直に行動)

 

。。。エラー解決。

 

信じられないくらいあっさりと解決しました。

頭と腰を痛めてやってたのはなんだったのかと。。。

 

まとめ

gemfileいじって、bundle install したあとにエラー起きたら再起動すること。

 

以上

 

さ、時間をどぶ沼に捨てる様なことになってしまったので取り返すぞ。