コロナで無職になった私がエンジニアになるまで

コロナの影響で前職をクビになってから、エンジニアを目指してます。

オリジナルアプリ作成記 4 ~依頼投稿一覧ページの作成、マイページ、エラーメッセージの表示~

エラーメッセージの表示 

前回の途中だったエラーメッセージの表示について。
layoutsの下に_error_messages.html.erbを作成して

<% if model.errors.any? %>
<div class="alert alert-warning">
<ul>
<% model.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>

のように記述。
ここら辺は調べたらすぐ出てきたので、テンプレ的な処理だと思われる。
あとはこれを表示できるようにする。

<%= render 'layouts/error_messages', model: form.object %>

これですね。
実際にはform_withの中にこれを書き込む。
これで、validationで引っ掛かった時とかにエラーメッセージが表示されるようになる。

依頼投稿一覧ページの作成

ここが一番今日時間かかった。
個人的にレイアウトを作成するのが非常に苦手。
自分の意図した部分に部品を配置しても「なんだかなー」ってなってしまう。
個人的にはデザインはともかく、アプリの機能性、学習した内容を使った開発を重視したいので適当にすることにした。今回からそうすると決めた。

f:id:Kosei_Program:20201226184431p:plain

だからデザインがダセェのはもう問題外。

マイページの作成

上の画像の名前をクリックするとマイページへアクセスできるようにしたい。

requests(記事のモデル)とusersでアソシエーションを組んでいるので、
users_controllerを作成して、そこでshowメソッドを定義する。

class UsersController < ApplicationController
def show
user = User.find(params[:id])
@nickname = user.nickname
@requests = user.requests
end
end

このuserの部分をcurrent_userで記述してもアソシエーションを組んでいるため、
マイページへアクセスすることができる…が!
そうすると、ログインしているユーザーのページ(=自分のページ)のみにしかアクセスすることができない。
それは問題なんで、user にUserモデルからidを取得してそれを扱うことにする。
こうすることで、他のユーザーのマイページへアクセスすることができる。
routes.rbも編集しておく。

マイページの中身はちなみにこちら。

<div class="show-wrapper">
<div class="show-main">
<div class="show-name">
<p><%= @nickname %>さんの投稿一覧</p>
</div>
<% @requests.each do |request| %>
<div class="show-title">
<p><%= request.title %></p>
</div>
<% end %>
</div>

 

f:id:Kosei_Program:20201226185217p:plain

あとはこの記事タイトルをクリックしたら、記事の詳細ページへ飛んで
そこでコメント打てるようにするなり、記事の編集をできるようにしたい。

詳細ページへのアクセスは記事一覧ページからもアクセスできるようにする。