ここからは応用的なことを説明していきます。 まずはコントローラーとビューを同時に作る方法を学習しましょう。 今までとコマンドが少しだけ異なります。 コントローラー作成時に、コントローラー名に続けてアクション名を指定します。 rails g controller …
今回は検索したテキストを含む投稿のみを 表示させられる機能を追加する方法を説明したいと思います。 トップページにフォームを表示させたいので、 index.html.erbにフォームを追加します。 <%= form_with ( url : search_posts_path , local : true , meth…
今回、ルーティングのネストという方法を 説明していきたいと思います。 例えばコメント投稿機能を付けたい時、 新してくCommentモデルを作成して、テーブルも作成しますね。 そしてルーティングしたい時、今まで同様にroutes.rbに記述します。 resourcesの…
今回は今までの投稿データを取得する時の方法と、 ユーザー情報もくっつけて投稿データを取得するための方法の違いと、 後者のそのやり方についてみていきましょう。 今まではPost.allで投稿の情報を取得していましたね。 ただ今回ユーザー情報も一緒に取得…
ここではマイページの実装を通して、アソシエーションやN+1問題に関して お話ししていこうと思います。 現状だといろんな人の投稿が一覧表示されていますが、 自分だけの投稿に絞って見ることができません。 そこで投稿を保存するときに、 それぞれユーザ…
SNSなどにあるようなログイン機能を実装したいと思います。 この機能を実装することで、 ログインするとログインボタンがユーザー名に切り替わったり、 ログインしたユーザーのみが投稿機能を利用できるように 制限をかけることができます。 このログイン機…
今回はまた便利な機能の紹介です。 一通り7つのアクションを定義し終えたコントローラーを のぞいて見てみてください。 同じような記述がありませんか? ありますね。 editアクションとshowアクションの定義がどちらも @post = Post . find (params [ : id …
7つのアクション、最後の一つshowアクションについて 見ていきましょう。 これは詳細を表示する機能ですね。 こちらも削除や編集と同じように投稿データごとに管理する必要があります。 idが1の詳細画面は、/posts/1 のようなパスになります。 いつも通り…
今回は投稿を編集する方法をご紹介いたします。 編集に使用するアクションは7つのうち、 editアクションとupdateアクションの2つです。 ではどんな作業か必要か考えてみましょう。 まずは編集画面へのルーティング。 そしてindexページに編集ボタンを追加…
今回は削除機能を実装していきたいと思います。 削除を行うためにはdestroyアクションを利用するのでしたね。 ルーティングするためにresources に :destroy を追加します。 そして削除ボタンを作成します。 どこに表示させるか、 投稿の一覧ページであれば …
今回はデータの入力の際に制約をかける方法を説明します。 このことをバリデーションといいます。 このバリデーションを設ける場合には モデルにvalidatesメソッドを記述します。 validates :text, presence: true これはtextが空欄だったら保存できないよう…
ここではデータを保存する際に使用する機能、 ストロングパラメーターを紹介します。 強そうな名前ですね。 これは何かというと、 簡単にいうと「指定したキーをもつパラメーターだけを受け取るよう制限する」 ということです。 これ、制限しないと意図しな…
以前紹介したフォームの作成で使用したform_withメソッドですが、 もっと便利な使い方を発見したのでこちらに書いていこうと思います。 以前紹介した際の記載の仕方は <%= form_with url : "/posts" , method: :post , local : true do |form| %> でした。 …
今回はルーティングの設定の際にとても便利な機能を紹介します。 まずはこの概念から。 CRUD これはアプリケーションのデータ関連に関する、 基本的な処理の頭文字を並べたものです。 Create、Read、Update、Delete 生成、読み取り、更新、削除です。 そして…
今回はレイアウトテンプレートという機能について まとめていきたいと思います。 レイアウトテンプレートとは何か。 それはページごとにビューを作成すると思うのですが、 全てのページに共通して表示されるものってありますよね。 ヘッダーとかフッダーとか…
今回はフォームから送信されたデータを テーブルに保存する方法を学びましょう。 まずは今までと同じ、ルーティングから。 routes.rbに追記します。 今回HTTPメソッドは何を使うべきでしょうか。 作成して送信を行います。 そう、POSTですね。 なのでルーテ…
まずはフォームを実装する前に、 そのフォームが実装されている新規投稿ページを作成する前に、 新規投稿ページに”アクセスする”部分から実装します。 少し前にルーティングの説明をした時に、 トップページ(indexアクション)へのルーティングを行いました…
ここではデータを取得し、ビューに表示させる仕組みを 書いていこうと思います。 まずモデルを利用して、テーブルからデータを取得するために必要となるのが ActiveRecordメソッドです。 all(テーブルの全てのデータを取得) find(テーブルのレコードのう…
データの追加方法は2パターンあって、 1つはSequel Proから直接入力します。 もう1つはコンソールを使って入力します。 今回はコンソールを使って入力する方法を学びます。 rails c でコンソールを起動させ、 モデルのインスタンス.save と入力します。 …
アプリケーションにはデータを保管する必要があります。 そこでどういった形でサーバーではデータの保管ややりとりが行われているのでしょうか。 まずデータベースに保存をするためには、 種類ごとに保存をするテーブルを用意します。 ここでは表形式でデー…
ビューは見た目を作る役割を持っています。 ではまずどのようにしてコントローラーから情報を受け取るのでしょうか。 コントローラー内で、インスタンス変数を定義しておくことで、その情報をもつ変数を使用できるようになります。 このインスタンス変数、結…
一つ前の記事ではルーティングで、リクエストとその行先を定義しました。 コントローラーではリクエストに対する処理を定義します。 ここでリクエストに対応する処理をまとめて用意しておきます。 そしてその処理が実行された後に、レスポンスとしてクライア…
ルーティングとは、リクエストを受け取りそれを振り分ける役割を果たしています。 なのでリクエストに応じた行先の定義が必要です。 それをコントローラー名とアクション名を使って定義します。 (コントローラーとアクションについては、実際に行われる処理…
ここでは現在制作しているRailsアプリの基本的な処理の流れを アウトプットとしてまとめていこうと思います。 Railsの処理の流れですが、 まず大きく分けてクライアントとサーバーに分けられます。 クライアントは自分のPC、サーバーはアプリケーションやデ…