LoginSignup
2
1

More than 3 years have passed since last update.

TECH CAMP 6週目

Last updated at Posted at 2020-05-17

さて、5月19日の報告会に向けての個人アプリ開発。幼稚園の出席簿アプリを開発中です。機能的には応用カリキュラムの復習も兼ねて、作成したChat-spaceと同様の機能+αといったところです。転職に使用するポートフォリオはこれと、あとは随時開発して増やしていこうと考えています。
また、報告会後に残りの機能実装、テスト、デプロイを実施予定です。ちなみに、個人アプリはメンターへの質問禁止です。

【学習内容】
・復習
(データベース設計、Haml、Sassでのマークアップ、deviseを使用したユーザー管理機能、メッセージ送信機能)
・CSV出力機能

ちなみに個人で開発しますが、Githubを使用し機能毎にブランチを切り替えながら進めていきました。Git、Githubの使い方に早く慣れよう‥と思った矢先にまたも事件が発生‥。

・復習
進め方はほとんどChat-spaceと同じなので、ほぼほぼスムーズにいきました。しかし、構想や設計の甘さがあり、開発途中でそれをまたゼロから作ることになり、さらに再開発中もデータベースのカラムを追加したりと反省点が多く浮き彫りになりました。
今後は構想の段階から細かい仕様を詰める必要がありますね。

〈機能説明〉
お子さんが休みの場合はこちらのフォームに入力し送信。
スクリーンショット 2020-05-17 16.02.10.png
そしてこちらが一覧表示されます。日付が新しいものが上にきます。
スクリーンショット 2020-05-17 16.09.03のコピー.png

幼稚園の先生はこちらを使用し出席管理。名前は一応あいうえお順ですが、自分はアルファベットなので先頭になっちゃってます(笑)
スクリーンショット 2020-05-17 16.14.33.png

・CSV出力機能
今回新たに学んだのはこれ。データベースの内容をスプレットシートに出力し、パソコン内へ保存します。またその中で、別のテーブルの内容を持ってくる必要がある為、.joins()でテーブルの結合も合わせて実施しました。

viewフォルダ内にファイルを作成。

view/messages/index.html.ruby
require "csv"

CSV.generate do |csv|
  @messages = Message.joins(:user)
  column_names = ["日付","名前", "内容", "事由"]
  csv << column_names
  @messages.each do |message|
    column_values = [message.dayname, message.user.name, message.absence, message.body]
    csv << column_values
  end
end

アイコンをクリックしたら出力できるようにhamlを編集。

view/messages/index.html.haml
=link_to messages_path(format: :csv) do
        = icon('fas','download')

〈機能説明〉
クリックすると‥
スクリーンショット 2020-05-17 15.51.00.png

スプレットシートに出力され保存が可能!
スクリーンショット 2020-05-17 15.52.23.png

ちなみに上記欠席内容のデータと、下記のように出席データも可能。
スクリーンショット 2020-05-17 15.57.33.png

これでペーパーの出席簿はいらないですね!
これ以外にも実装したい内容はありましたが、自分のスキルが足りなくて悔しい思いをしています。
あと事件というのは、Githubでコミットする前に間違えてブランチを切り替えてしまい、その前日に作った分が全て消えた事です。ショックでしたけど、その分CSVをまたやる事になり良い復習になりました!

参考

【簡単3ステップ】RailsでCSV出力する方法
Rails における内部結合、外部結合まとめ

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1