プログラミング備忘録

プログラミングの学習状況をメモしています

11日目

今日の学習

Ruby on Rails

before_action

【Rails】 before_actionの使い方を徹底解説! | Pikawaka - ピカ1わかりやすいプログラミング用語サイト

Progateのときは、すごく何となくの理解で使っていたbefore_action。

同じ記述の処理をまとめ、リファクタリングする際にも使用することを学んだ。

同じコントローラ内に、使いまわしたい記述のメソッドを作成し、before_action メソッド名のように使用する。

また、onlyをつけることにより、特定のアクションのときのみbefore_actionを使用することができる。

反対に、exceptを使用すれば、特定のアクションではbefore_actionを使わないようにする。

部分テンプレート

ビューファイルにて、同じような記述をしている箇所があれば、その部分を部分テンプレートとすることにより共通化できる。

共通部分を、部分テンプレートファイルに移行しする。

部分テンプレートファイル名は、最初に_で始める決まりがある。

例: _form.html.erb

ファイルを作成後、部分テンプレートを使用したい箇所に、 <%= render "_を除いたファイル名%>を記述。

例: <%= render "form" %>

部分的に記述を変えたい場合も、変えたい部分を変数にして、<%= render "_を除いたファイル名%>の後ろに記述をする。

Bootstrapの練習のために、簡単なメッセージ投稿アプリを作成していたのだが、削除ボタンを押しても記事が削除できない。

削除ボタンを押すと、詳細ページに飛んでしまう。

ページのソースから、削除ボタンを見てみても、data-method="delete"となっている。

link_toで突然methodが効かなくなって困ってるあなたへ - Qiita

【Rails】link_toでdeleteが効かない時の解決方法 - Qiita

以下、下の記事から引用

HTTPメソッドにDELETEを指定しているにもかかわらずGETでリクエストが送られていることが原因

納得...。そして、こちらのサイトの通りに、app > javascript > packs > application.jsに、//= require jquery_ujsと記載することで解決。

ちゃんと削除できるようになった...のだが、貼り付けてすぐは相変わらず削除できず、その後にあれこれ試しているうちにいつの間にか削除できるようになっていたので、結局何が決定打だったのかは分からなかった。

しかし、次にまた同じようなエラーが出てしまったとき、今回の経験を元に解決に当たってみようと思う。

削除できない!と気づいてから1時間半ほど格闘していたので、大変だった...。

やんばるエキスパートでは、20分分からなければ質問してくださいと言っていただけているが、もう少し調べれば分かるかもしれない!というのと、20分調べると知らない知識が出てきて、それを調べてまた時間経過...となっていくため、どの辺りで質問していいのかいまいちタイミングが分からない。

完全に同じ場所で20分止まってしまったときには、頼らせていただきたい。

今回のことで、javascript周りの知識が皆無のため、そこもしっかり勉強する必要があるなと思った。

Progateでjavascriptの学習を、一度完走はできたもののアロー関数あたりで自分の理解が限界になってしまったが、当時は引数?なんだそれはというレベルだったので、今もう一度学習してみると以前よりも理解できる可能性が高い。

学習メモ

  • フラッシュの設定は、リダイレクトと併用する場合はまとめて記述できる
    redirect_to post, notice: "投稿しました"
  • フラッシュは、成功時はnotice 失敗時や削除時はalertを使う
  • バリデーションエラー時にレンダリングをして、フラッシュを設定する場合はflash.nowを使う
    レンダリングflashを使用すると、他のページに移動しても一度だけフラッシュが残ってしまうため
  • link_toにクラスをつける場合は、class: "クラス名"
    class= "クラス名"ではないので注意
  • Rails Best Practice ...コードをチェックできるgem

余談

はてなブログのテーマを変更しようと思い、自分はサイバーチックなものが大好きなので、それらしいデザインを探していた。

blog.hatena.ne.jp

かっこいいが、可読性に欠けてしまうため、利用はやめておく……。

というか、なんでテーマ検索できないんだ?