Udemyのこちらのコースを受けながら、疑問に思ったこと、調べた結果、大事なことをまとめていきます。
part2-7 loginしている時としていない時で場合わけ
deviseのHPを見ると、usr_signed_in?という変数でログインしているかしていないかをboolで判断できる。
bootstrapのdropdownが動かない。
bootstrapのHPから適当にdropdownのコードひっぱてきたのだが、dropdownされない!
ググって見ると、application.jsのbootstrapの読み込む順番が大事らしい。jquery.jsがbootstrap.jsよりも後にあると、うまくいかないよう。
参照
自己課題
- ログインしているときはログアウトとemailだけを表示。
- dropdownを適応させ、emailを表示し、中にログアウトを入れよ。
part2-8 toastrを導入
toastr はこちら。
flash(簡易メッセージを表示するもの)を導入。
表示されるためのコード。
view/layouts/application.html.erbのbodyの中に追記。
<% unless flash.empty? %> (flashにメッセージがあるとき。)
<script type="text/javascript">
<% flash.each do |f| %>
<% type = f[0].to_s.gsub('alert','error').gsub('notice','info') %>
toastr['<%= type %>']('<%= f[1] %>');
<% end %>
</script>
<% end %>
解説。
まずgsub。これは第一引数を第二引数に変換するもの。
s1 = 'AAABBBCCCAAA'
s2 = s1.gsub('AAA', 'XXX') #=> "XXXBBBCCCXXX"
subは最初に出てきたものだけ変換する。
参照
fは何かと言うと、例えば、
f[:notice] = "signed in succeesfully"
とあった場合、f[0]=:notice, f[1]="signed in succeesfully"らしい。ちょっとここが引っかかる。行列的だけど=跨いでるのが不自然。
toastr[flashの種類][表示させる文字]にするために変換していくと思われる。
view/layouts/application.html.erbは全てのビューで読み込まれる。
bodyの中にこの記述がある。
<%= yield %>
ここにindex.html.erbなどが呼び出される。
自己課題
- toastrを導入。
- application.html.erbにコードを追加。