自作webアプリ1 TODOアプリ

AWS Cloud9に繋がらないときはインスタンスの停止→起動

現象 一昨日からAWS Cloud9でenvironmentに接続しようとしても「connecting...」のまま数分動かず、そのまま放置していると This is taking longer than expected. If you think there might be an issue, contact AWS Support. It might be caused by VPC c…

ranked-modelを使うときは :with_sameオプションを付けよう

前置き 自作中のTODOアプリではタスクの表示順を自由に入れ替えできるようになっています。 indexページには User の Task 一覧を表示 表示の順番はranked-model gemを使って :row_order の値で制御 それぞれの Task はjQueryUIのsortableを導入してドラッグ…

テンプレート側で出力する値の処理を行うのは避ける

表示に必要なデータはプログラム側で用意し、 テンプレートではデータを埋め込む場所や表示方法などを記述する。 前置き 「そのタスクがいくつのサブタスクを保持しているか」をindex画面に表示しています。 この部分のコードが以下です。 <td><%= task.subtasks</td>…

繰り返されるインスタンス変数の初期化をメソッドに切り出す

前置き 作成中のTODOアプリでは、ユーザーがタスクを複数所有し、それぞれのタスクがサブタスクを複数所有しています。 アクションメソッド(数個だけ抜粋) def show @user = User.find(params[:user_id]) @task = Task.find(params[:task_id]) @subtask = …

入力したテキストの改行をviewに反映する方法

このように、テキストの改行が反映されるようになります。 simple_formatメソッドを使う このメソッドは与えられた文字列に対して 文字列を<p>で括る 改行は<br/>を付ける 連続した改行は</p><p>に変換 という処理を行います。 ただ、HTMLタグなどをサニタイズする働きもあ</p>…

テキスト内のURLがaタグに変換されるようにする

目的 タスク管理アプリのタスクの説明部分にリンクを追加できるようにしたい。 つまり、text_areaなどで入力したテキストを表示する際にURLを含んでいたら自動的にリンクを作るようにしたい、ということです。 helperメソッドを作成 URIライブラリを使います…

ネストしたリソースのユーザー制御

完成したタスク管理アプリに、「ひとつのタスク内にサブタスクを作成できる機能」をアップデートで追加しました。 Subtaskモデルを作成したので、現在ルーティングはこうなっています。 Rails.application.routes.draw do get 'static_pages/home' root to: …

Herokuへのデプロイ時に苦労した話

昨日完成したTodoアプリをHerokuにアップしました! その際2箇所でつまづいたので、記録しておきます。 pg gemがインストールできない HerokuではSQLiteがサポートされていないのでPostgreSQLを使います。 sqlite3 gemをproduction環境で使わないように、 そ…

jQueryUIのsortableで並び替えが保存されない

Rails5.2.1 初の自作アプリとしてタスク管理アプリケーションを作成すべくこの一週間奮闘してきまして、本日とりあえずの完成に至りました。 Taskの並び替えをドラッグ&ドロップで実現すべくjQueryUIの導入を目指してドン詰まったのが前回の記事でしたが、…

application.jsの記述が原因でjQueryUIが動かなかった話

前置き 作成中のTodoアプリケーションで、タスクのドラッグ&ドロップで並び順を自由に替えられるようにしよう!ということで qiita.com こちらの記事を参考に実装を進めていたんですが、手順を完了してもドラッグ&ドロップが動かない…… application.jsファ…

Deviseインストール直後のテストで失敗

自作のアプリにログイン機能を実装しようということで Devise を試してみました。 qiita.com こちらの記事を参考にさせていただいたんですが、ひと通り設定が終わってrailsサーバー再起動のあとログイン画面を確認できたので、自動で作成されたテストを試し…

Todoアプリケーション作成に向けて

アプリケーションの目的 普段プログラミングを勉強しているときに、 「このサイトを参考にしながらこういう知識を学んで……」 「そのために前提としてまずこっちを学んで……」 とやっているうちに頭の中でごちゃごちゃになってしまう。 今回はそういった問題を…

Bootstrap4の導入方法

ドットインストールのBootstrap 4入門を見ながらTodoアプリにナビゲーションバーを追加してみたけど……あれ、レイアウトがおかしいぞ…… あ!Bootstrap4追加してないじゃん! ということで、Rails(5.2.1)でBootstrap4を導入してみました (執筆時点でのbootstra…

テストメソッドまとめ

まずは基本から assert(boolean, message = "テキスト" ) boolean(式) がtrueであればテスト成功 boolean(式) がfalseまたはnilのときはテスト失敗 テストが失敗したときにmessageに入力したテキストが表示される(省略可) 1つのテスト内にassert~メソッド…

かんたんなTODOアプリを作る(5回目)

今回も今までと同じ仕様でTODOアプリを作成しました。 課題は「テストを書きながらコードを実装すること」 このくらいの簡単なアプリだとテストを書く部分がそもそも少ないと思いますが、とりあえずやってみました。 つまずいた部分 titleとdescription属性…

かんたんなTODOアプリを作る(4回目)

4回目はGitの基本操作の習得を課題としました。 今回もレイアウトと機能は発展させていません。 「最近はGitHub Flowを使うのが主流」というツイートを見かけたので、そのGitHub Flowの流れを実際にやってみました。もちろん1人で。 まずはアプリケーション…

かんたんなTODOアプリを作る(2,3回目)

前回作った最低限のTODOアプリを再度作成しました。簡素な機能とレイアウトはまったく同じです。 今回学んだこと form_forヘルパーの仕組み(記事作成済み) User.new(params[:task])でForbiddenAttributesErrorが出るのは、mass assignmentの脆弱性(チュー…

form_for(@user) のカッコの中身って一体なに?

form_forの使い方がいまいち分かってない。 form_for(@user) の(@user)ってそもそも何を意味するんだ……と思ったので調べました。 結論 モデルオブジェクトである form_forの引数にとるのは「モデルのオブジェクト」だということが分かりました。 Userコント…

かんたんなTODOアプリを作る(1回目)

Railsチュートリアルを終えてからはや5日、やっと最初の自作が完成しました。 はじめはUserモデルを作ってTaskと結びつけて……とか考えていたんですが、復習する箇所が多すぎてどうにも進まなかったです。 なので とりあえずハードルを極限まで下げました で…