Closed20

2023.10.09 学習記録

なななななな

Rails基礎21の復習

クリアを急いでしまい理解していないままの部分が多々あるので、じっくり確認していく。

なななななな

あ、「Invalid Authentication Token」は出るものなんだ。良かった。なにか変なことやってるせいで出たのかと思ってた。
ただエラーの回避方法は私がやったのと違ううえに、詳しい解説がないな。後で調べよう。
とりあえず今は全部のポイントをざっと把握する。

なななななな

解答例では/view/admin/layoutの中にadmin.html.erbを作ってるな。同じ構成にしよう。

なななななな

あれ、復習ポイントこれだけ!?
マジか〜…まあまずは現時点で判明してる修正ポイントをIssueに追加しよう。

なななななな

OK、とりあえず2つとも修正だけ先にしてしまおう。

なななななな

レイアウトファイルはついでにファイル名も「/admin/layouts/application.html.erb」に変えよう。

なななななな

管理者ユーザーかチェックするメソッドの名前も解答例に合わせて変える。

なななななな

管理者ログイン画面のレイアウトファイルに以下のコードを追記。

admin_login.html.erb
<%= csrf_meta_tags %>
<%= csp_meta_tag %>

逆に/admin/user_sessionsコントローラに書いた以下のコードを削除。

user_sessions_controller.rb
protect_from_forgery except: :destroy
なななななな

あ、しまったadmin_login.html.erb に<title>タグ2つあることに今気づいた。いらない法消しとこ。

なななななな

ん!?修正したらまたログアウトできなくなったぞ⁉
ええ〜なんで?
解答例のコードひと通り見てみるか…他のところでなにかやっちゃってるのかもしれん。

なななななな

別件だけどadmin_login.html.erbの指定、普通にコントローラ単位で良かったんだなそういえば。解答例コード見て気づいた。これもついでに直しとこ。

なななななな

あ、わかった。レイアウト指定してなかったからだたぶん(ログアウトのリンクにもdestroyアクションにも書いてなかった)。回避コード、修正前はuser_sessionsコントローラに書いてたから効いてたけど、レイアウトファイルの<head>タグの中に移動したから適用されなかったんだ。

なななななな

ビンゴ。レイアウト指定をコントローラ単位にしたらいけた。

なななななな

よし、後は引き続き解答例コードを見て違うところを修正していこう。

なななななな

CSSやJSなんかのアセット、個別に指定したい場合は基本「application.css(もしくは .js)の内容コピペ + 個別の分を@importで読み込む」という感じにすればいいんだな。

なななななな

というかあれか。ビューではこれを読み込む!っていう代表ファイルを作って、その代表ファイルの中で他のファイルを@importで読み込むっていう方式だな。代表ファイルにすべての読み込みたいファイルをインポートしておく。
というか代表ファイル=以前調べたアセットパイプラインにおけるマスターファイル??

なななななな

まあいいや。ともかく基本的にはビューで読み込むCSSおよびJSファイルは一つにして、その一つの中に実際に必要なCSSおよびJSファイル群をインポートしておく、と理解しておこう。

なななななな

解答例だとAdmin::BaseControllerでnot_authenticatedメソッドをオーバーライドしてるな、通常のログイン画面じゃなくて管理者ログイン画面にリダイレクトするように。
確かにadmin関連領域においてはそのほうが自然か。追記しておこう。

なななななな

今日はここまで。明日も引き続き解答例を見ながらコードを修正していく。

このスクラップは2023/10/09にクローズされました