見出し画像

もやっとしていた箇所の理解が進むと楽しい Day2/30

本日もRailsを学びました。

あまり進ませんでしたが、もやっとしていた箇所が理解できたので、アウトプットします。78分。

学んだこと:ユーザーページの編集機能の追加

ProgateのRailsコース6を終えました。

登録したユーザーの名前やメールアドレスを編集するページを作成するという課題です。どのような流れなのか、言語化してみます。

/users/:id/edit というURLをルーティングに記述し、Userコントローラーのupdateアクションに割り当てるコードを書きます。

erbテンプレートに入力フォームを作成し、名前とメールアドレスを再度記入してもらいます。

入力したデータは form_tag で /users/:id/edit に送信される。入力されたデータは、name属性を利用して、updateアクションで parames[:〇〇]で受け取れるようにする。

updateアクションでは、まずURLに含まれる id を parames で受けて、データベースのUserテーブルから該当ユーザーの内容を @User に格納する。

その@User変数の名前とemailの内容を erbテンプレート内の入力フォームから parames を利用して、更新する。

更新できたかどうかで、if文で条件分岐し、うまく更新されれば、ユーザーページにリダイレクトさせ、flash変数を使って更新成功の通知を送る。

うまくできなければ、renderメソッドで、編集ページに戻す。

という一連の流れになる。

困難だったこと

● name属性とparames

parames の使いかたがわからなかった。ずっとぼんやりしていた。

この変数は、2つの使いかたがある。

1 URLに含まれる「:○○」という値を受けとめてくれる

2 name = "〇〇” のつくフォームの入力内容を受けとめてくれる

たいへん便利な存在だった。ちなみにparamesはパラメーターの複数形。

name属性は、name ="〇〇"とすれば、あっちからこっちへデータを送るときに、あるデータにある名前をつけることができるという優れものだった。

● form_tag

これを記述する理由が腹落ちしていなかった。erbテンプレートにはすでに入力フォームがあるのに、どうしてこれを記述する必要があるの? と思っていた。すごくいい奴だった。

このメソッドを使うと、フォームに入力さえたデータを指定したURLに送信してくれる。行き先案内人だった。つまり、post先のアクションを指定している。

そして目的地に着くまでに、条件分岐を入れることができる。このまま進んでもらうのか、引き返してもらうのか、と。

● get と post の違い

このふたつも、理解があいまいだった。ざっくりした説明にはなるが、

get は情報を検索したり、取得するときに使うHTTPメソッド。

post はデータベースを変更する処理に対して使うHTTPメソッド。例えば、新規ユーザー登録や登録情報の更新のときに使用する。

どうやって乗り越えたのか?

● Qiitaなどのネット記事を読み漁る → 書籍でチェック →いま言語化

ネット記事は玉石混交だが、微妙に記述する角度が違ったり、言葉の使いかたに違いがあるので、いくつか読むことにしている。だいたいぴったりな記事が見つかる。

その後、該当箇所を参考図書で調べてみる。いまのところネット記事の横断でなんとかなっていると思う。

そしてこの言語化で、また理解が深まる。

コードを書いているときは、その場しのぎの理解でなんとかなるが、文章にするとなると、一連の処理のなかでの位置づけや、表現すべき言葉の欠如に気付くことができる。

例えば、「Rubyが書けるhtml」という曖昧な言葉は使えない。調べて、erbテンプレート、という言葉を知る。

他にも、「post先のアクションを指定する」という言葉に出会い、教材の指示はこんなふうに言葉にするのか! と理解できる。

いちばん避けたいのは、何がわかっていない状況か説明できない、ことだと思っています。言語化は、その自体を避けることにつながってる、と思います。

もちろん、まったく言語化できていない部分もたくさんありますけど、とにかく失敗してもいいので言語化しようと思います。

うれしかったこと

もやもやが晴れたときですね。paramesやname属性の役割を理解できてうれしかったです。アハ体験ですね。

もっと学ぼうと意欲が出ます。もちろん仕事としてやるレベルへの道のりは長いでしょうが、、、

言語化もうまくいけばうれしいですね。求めていた言葉が見つかるときの快感は、代えがたいです。

明日もがんばります。

読んでくださったかた、ありがとうございます。

たわら

この記事が気に入ったらサポートをしてみませんか?