もやっとしていた箇所の理解が進むと楽しい 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属性の役割を理解できてうれしかったです。アハ体験ですね。
もっと学ぼうと意欲が出ます。もちろん仕事としてやるレベルへの道のりは長いでしょうが、、、
言語化もうまくいけばうれしいですね。求めていた言葉が見つかるときの快感は、代えがたいです。
明日もがんばります。
読んでくださったかた、ありがとうございます。
たわら
この記事が気に入ったらサポートをしてみませんか?