リアルタイムで閃いた。笑 PAY.JP導入準備。チームメンバーのコード改善。【サプライズ神回】

こんにちは、

初めましてMasaです。

 

今回記事を書いてる途中でアイデアを閃いて

貴重な修正する過程を残せたので

楽しんでいただけるかなと思います。

最後まで読んでいただけたら幸いです^^/

 

今日はクレジットカード決済を実現させるために

PAY.JPの導入に取り掛かりました。

 

まずはマークアップから

■本家

f:id:masataka_sugita:20190603200606p:plain

本家view

 ■今回作成したもの↓

f:id:masataka_sugita:20190603200716p:plain

今回作成したview

いい感じでできたんじゃないかなと思いっています。

 

楽しかった点

・今回自分なりに楽しかったなと思うところは

selectのプルダウンメニューの改善です。

 

チームのメンバーの一人が以前作成してくれた

 

selectのプルダウンメニューは

f:id:masataka_sugita:20190603201214p:plain

改善前のselectのコード

上記のコードで「おお〜」って思いましたが

実際に表示される桁数が01から表示されていないという問題がありました。

おそらく期待している挙動としては

[01.02.03.04.05.06.07.08.09.10.11.12]

だと思うのですが

表示される表示は

[1.2.3.4.5.6.7.8.9.10.11.12]

このように桁数が省略されていました。

 

別にこのままでの問題ないかなーと思いましたが

ちょうど僕が実現したかった処理が

f:id:masataka_sugita:20190603201744p:plain

狙いの処理

↑こちらのコード。

記事:https://qiita.com/takachan_coding/items/f7e70794b9ca03b559dd

 

本家も01からカウントされててせっかくなら動的な動きも完コピしたいな。。

ということで

 

修正を加えてみたコードがこちらになります。↓

f:id:masataka_sugita:20190603202221p:plain

修正後のコード

桁数の0埋めは初めてのことで困惑しましたが

何とか実現させることができました。

 

ですが・・・

 

画像下の

%select{name: "year", class: "select--item"}
= (19..29).each do |year|
- full_year = "20" + year.to_s
%option{value: full_year}
= year

 こちらのコードに関して今だにモヤモヤしているのは

べた書きで

19..29と書いてしまっていることです。

 

というのも

2020年になったらどうするの?問題です。

 

明らかに時間の変化に弱いコードになってしまっていますね・・・^^;

 

調べて

f:id:masataka_sugita:20190603202953p:plain

ここまで辿りつきましたが

その先にどうしたらいいのか・・・

というところでいきず増しました。

 

その時に頭の中でぐるぐるした考えとして

・年を取得する処理を コントローラに書こうか

・モデルに書こうか

・そういえばモデルとビューの関係性ってどんな関係だっけ?

・モデルで定義した変数ってviewで使えるっけ?

 

あ、今書いてて思いついたことが一つ出たのでやって見ます。

コントローラーで処理の返り値として

現在の年を取得して10を加えてたものを配列として吐き出させて

@arrayとしてインスタンス変数にしてそれをviewでeachで回してみます

 

やって見ます!!

できました笑

(まじでやってました笑)

 

今書いたコードはこちら!

 

■コントローラー

f:id:masataka_sugita:20190603210628p:plain

newアクション部分

■view

f:id:masataka_sugita:20190603210721p:plain

viewに@インスタンス変数array

感動。。

 

まさか記事で振り返りしてる時に

思いつくとは^^;

(記事書いててよかった)

 

今回のコードで2099年までは何とか耐えれそうです笑

 

補修性、変化に強いコードを書くというのは

最近自分の中で大切にしていることなので今回それを実現できてよかったです。

 

本日の勉強時間11時間。

 

長くなってしまいましたが、

最後まで読んでいただきありがとうございました。

 

今回お世話になった記事一覧:

http://cameong.hatenablog.com/entry/20120806/1344271504

https://qiita.com/takachan_coding/items/f7e70794b9ca03b559dd

https://www.javadrive.jp/ruby/date_class/index3.html