【チーム開発】本日の進歩状況2020-08-04

・本日の作業

バリデーションなどでsaveが失敗した際にrenderで「new」アクションに戻るようにエラーハンドリングを行っています。

jsで入力欄や画像を表示してる部分が、render後には入力されていない状態で出品欄にきてしまいます。いろいろ調べていたのですが何も分からずメンターさんに相談しました。

 

画像投稿の部分ではcarriewaveを使っている場合はcashという機能を使うと上手くいくかもということでこれから調べていきます。

カテゴリー欄に関しては編集機能で初期値を表示するようにする記術

= f.select :category_id, options_for_select
(@category_parent_array.map{|c| [c[:name], c[:id],
{'data-category'=>c[:id]}]}, @product.category.parent.parent.id),
{}, { class: "product-information__category--select_form",
id: "parent_category"}
@product.category.parent.parent.id),
の部分を条件分岐させてselect欄を入力しておくと上手くいくのではとのことでした。
何だか少し手間取りそうなのでこのエラーハンドリングは後回したいと思います。
それとturbolinksを削除したことによりJavaScriptの記述をちょっと変更し、それだけでオッケーかと思っていたのですが思わぬ落とし穴が。
商品編集時にredirect_toで商品詳細ページに飛ぶようにしていたのですが、なぜか編集はされているのに商品詳細ページに飛ばなくなっていることも判明しました。
調べるとこれはすぐに答えが出てきました。
参考サイト
これもturbolinksを削除した影響だったみたいです。
form_withのコードを
= form_with model: @product do |f|
 から
= form_with model: @product, local: true do |f|
 とlocal: trueを追加したら直りました。
でもcreateの時は大丈夫なのになぜupdateの時はダメなのか。
謎ですね。
 
意外と手こずったrender関係。やはりプログラムは一筋縄ではいきません。
 明日からはまたマイページの実装の続きをやっていこうと思います。

【チーム開発】本日の進歩状況2020-08-02

・本日の作業

昨日カテゴリー編集機能が終わったので

今日からはユーザーマイページの実装に移りました。

 

取り敢えずlink_toを使ってリンクをいろいろ貼りました。

f:id:uchixm:20200802232951p:plain

ビューがないものに関してはビューを作って、出品商品の表示には成功しました。

f:id:uchixm:20200802233109p:plain

kaminariも導入し、カリキュラムでやったページネーションも実装してみました。

 

・躓いているところ

購入済み商品をどう表示すればいいのかが謎です。

購入したユーザーを登録するカラムをつくる必要があるのだろうか?

メンバーとも相談しなければならない案件っぽいです。

水曜日にでも相談だ。

【チーム開発】本日の進歩状況2020-07-27

・本日の作業

①画像編集機能実装

②カテゴリー編集機能実装

の2点について作業しました。どちらもJSにとまどりました。

 

①画像編集

f:id:uchixm:20200727232719g:plain

editに遷移してもビューの崩れもなく投稿もできました。

そのまま商品出品しても問題なし。

削除の順番によっては商品が投稿できなくなるエラーを抱えていますがそれはひとまず置いておくとします。

 

②カテゴリー編集

f:id:uchixm:20200727235218p:plain

商品の初期値を表示することには成功。
newアクションの時とカテゴリーの呼び出す順番が逆なのでそこに苦労しました。

これもJS使っているのですがeditだと上手く動いてくれない。きっとget_category_childrenメソッドとget_category_grand_childrenメソッドをeditアクション用に変更しないといけなさそうです。

なかなか時間がかかりそう。

 

 

【チーム開発】本日の進歩状況2020-07-26

・本日の作業内容

①カテゴリー機能実装完了。LGTMをもらいmasterにマージ

②商品編集機能の画像編集の部分に取り組む

大雑把にいうと上記2点でした。

 

サイズのバリデーションをどうかけようかずっと迷っていたのが解決。

productモデルに size_exist(選んだカテゴリーにサイズが存在するか確認するメソッド)を作り、

size_existでsize_idカラムに条件つきバリデーションをかけることに成功しました。

size_idが保存されないのは送られているパラメーター名と保存するカラム名が違ったからっぽいようです。送られてくるパラメーターをどう変えるのかわからなかったためカラム名を変えることに。何とか保存できました。

カテゴリー機能今日で終わって一安心

商品出品機能の時に思ってましたけど、画像編集とカテゴリー編集はJSを使っているからか一筋縄では行かなそうです。

とりあえずnewとeditで同じフォームを使っているのでviewの中で場合分け。

if文が多くなるので可読性はよくないかも。

初めからviewを分けた方がいいのだろうか?

とりあえず条件分岐はできたのでこのまま実装進めていきます。

 

・躓いているところ

editの際画像を追加するとプレビュー画像の下に画像が追加される。本来は横に追加していって欲しいのに。

JSをedit機能用に追加すれば直るのだろうか。ひとまずJSをedit用に追加変更していきます。

 

 

【チーム開発】本日の進歩状況2020-07-25

・本日の作業内容

昨日サイズの表示ができるようになったのですが

上手く保存できていない事に今日気付きました。

データは送られているっぽいのでcreateの記述をしっかりやらないといけないようです。

サイズのバリデーションのこともあるので早め早めにやっていこうと思います。

【チーム開発】本日の進歩状況2020-07-24

・本日の作業

サイズを表示するためのJSを記述して半日、なんとかサイズの表記に成功しました。

f:id:uchixm:20200724213113g:plain

ただカテゴリーの時と同じようにrenderで戻ってくるとカテゴリーが選択できないのはそのまま。

最初はturbolinksが悪さしているのかと思ったのでがそんなこともなく

どうしようもなくなりメンターさんに相談しました。

結論からいうと

JSのajaxでurlを指定する際

url: '/products/get_category_children',

とurlパターンを記述する必要があるようです。

メンターさん曰く

「renderを使う場合はurlパターンをしっかり記述しないとルーティングエラーが出てしまうので気をつけてください」

とのことでした。

お陰様で無事renderされてもカテゴリーが動くようになりました。

・躓いているところ

サイズを選択しなければならない時にだけnot null制約を付けたいのですが、なかなか上手く実装できないでいます。

if文を使えば良さそうだけどどう使えばいいのかがよくわかっておらずお手上げ状態です。

明日メンターさんに相談して解決できるといいな。

 

【チーム開発】本日の進歩状況2020-07-23

・本日の作業

今日は初めて朝モクに参加しました。

二度寝せずに起きると気持ちいいですね。今度から早寝早起きに切り替えようか。

それは置いといて今日の作業です。

1.productモデルのバリデーション確認。

バリデーションをちゃんと確認していなかったのでその確認をしました。

「一つ一つ投稿するのは面倒だな、本当に大丈夫かな」ということで、バリデーションエラーを表示させてエラーがちゃんと出ているかもついでにやってみました。

カリキュラムでもやったしすぐ出来るだろうと思ったのとどうせなら部分テンプレートで実装して記述をスッキリしようとしたところ、

一番上にまとめて表示させるのはすぐ出来たのですが、一つ一つのフォームの下に表示させるのが上手くいかず、

結局部分テンプレートは諦めてまんまif文を書いてコピーペースト・記述修正でエラー表示出来るようにしました。変なところで時間を使ってしまった。

f:id:uchixm:20200723225523p:plain

2.カテゴリーテーブルのデータ残りを作成、サイズ用のテーブルと中間テーブルデータ作成

タイトルの通りテーブルのデータ作成をしました。

カテゴリー参考サイト見るとわかるんですけど結構な量、

最初は丁寧に打ち込んでいたのですが、途中からコピー&ペースト出来ることに気付き

コピー&ペーストして「' '」で囲む作業を永遠とやっていました。意外と大変。

カテゴリーのデータベース作成が終わってからはサイズのデータベースを作成。

カテゴリーの時と同じように、each文を使って作成しました。

f:id:uchixm:20200723230417p:plain

サイズは子まで作成したら終わりなのでカテゴリーと比べたら楽でした。

サイズとカテゴリーの中間テーブルはcsvファイルで記述したものを読み込みました。これはブランドでやった時と同じですね。

チョロチョロ記述ミスもあったので一発では成功しませんでしたが

なんとかデータベースの作成に成功。

明日はサイズを表示するようJSを書くだけです。これがなかなか大変なのですが。

明日も朝モク参加出来るよう今日はこれで寝ようと思います。

また明日。