20201126_アウトプット(商品詳細表示機能・商品情報編集機能)
今日行ったこと 8時間
商品詳細表示機能👉LGTM✨
商品情報編集機能(エラーハンドリング以外まで終了)
新しい発見
ヘルパーメソッドのlink_toについて
hrefのような「文字列を押したらリンク先へ飛ぶ」場合には、
<%= link_to 'リンクに表示する文字', 'リンク先のURL' %>
にする。しかし、「画像でも金額でもどこでも押せば(divタグ全体)リンク先へ飛ぶ」場合には、
リンクに表示する文字
を消し、doとend
で囲うことを理解。(めっちゃすっきりした)コントローラーで定義しているアクションに応じてビューが書かれていることを実装時よく忘れがち。トップページ(index)にある部分から、showにリンクを飛ばすには、indexアクションに定義しないと飛べないことを理解。
しかし、今回の場合には、eachメソッドのブロック変数を使い、パラムスとして活用できることを理解。
自動で振り分けてくれるform_with!
ツイートの「新規投稿」
「newアクション(空のインスタンス生成)」
⇩
「newのビュー(form_withを使ってユーザーがデータ入力)」
⇩
「createアクション(ツイートの保存)」
ツイートの「編集」
「editアクション(パラムス入り)」
⇩
「editのビュー(form_withを使ってユーザーがデータ入力)」
⇩
「updateアクション(ツイートの情報更新)」
「新規投稿」と「編集」は渡される中身が違うだけで同じことしてる!
- 渡されるインスタンスの中身が空なら「投稿」、すでにあるなら「更新」と、form_withを使って自動で振り分け可能なことを理解。(なんて便利なんだ!)
ログインしている人によって、表示するボタンを変える
「商品を編集する」ことも、「商品を購入する」ことも、「ログイン」していることが前提になると、まず「ログインしてるか」の条件分岐があって、その中に「商品の出品者か(編集できる)」「商品の出品者以外か(購入できる)」実装することを理解。
ログインしてない人でも詳細画面をみるには、コントローラーに書けばいいことを理解。(そうすると、「編集する」「購入する」ボタンは表示されない状態にしつつ、showのビューファイルを表示できることを理解。)
編集の時に、出品時に入れたデータの入力を保持するには?
form_withを使って、第一引数にモデルを定義すると出品時のデータを保持する実装ができることを理解。
呼び出すには、ブロック変数を使って、
ブロック変数.text_area
などと、書くと呼び出せることを理解。(editとnewのビューファイルの違いがわかり、form_withの万能さに感動した)
感想
転職相談の日程を決めた。8/1からあっという間に丸3ヶ月近く経ち、テックキャンプの卒業の方が近くなったことを実感。
計算したら今週の勉強時間が50時間超えてた😲!でも、苦じゃないほど楽しく実装している。3連休もあってラッキーだったなあ。
出勤の行き帰りとかもあの実装どうやったら上手くいくかなってワクワク考えていることが多いかも。(閃くと嬉しい)
一番理解が深まったと感じるのは、Railsのサーバーサイドのこと。ビューは繋がりの理解が深まった。
条件分岐は、過去の作成アプリをただコピペするだけじゃ上手く行かなくて、そのファイルのコード上で、インスタンス変数がどう情報を持って動いているのか、ブロック変数を活用しているのかなど、全体像を理解していないと実装出来ないことを痛感することが多かった。そして今になって、このメソッドはここを呼び出していたのか(昔は全部同じ「tweet」にしか見えず、コントローラー・モデル・カラム・ビューどことリンクしているのか意味不明だったため成長を実感)
今になって「HOW」より「WHY」を大事にする姿勢で学んできたことが活きているような感じがして嬉しい。
GitHubや他のキータから、ちょっとずつどこを拾っていけば実装出来そうな気がするか、最終課題を通して力が鍛えられた気がする。(エラーになることも多いけど(´;Д;`))