Rails7になって日が浅いためか、いろいろと情報の混乱が多いので、ひっかかったところを備忘録的に
Jquery/Bootstrapの導入が面倒くさすぎる
Railsで一番面倒臭いと思ってる/思ってたのがJquery/Bootstrap導入。ほんとーーーーに面倒くさい。ここにあれをかけ、yarnでインストールしろ、ここにもあれをかけ、ほんでwebpackを使うかesbuild使うかえらびなはれ。おや、Rails7では違うようだねやりなおしや。どこいじったっけ。どうやって直せばいいんだっけ。表示おかしくなってるで。
あああああ
どうやって直せばいいのかわからなくなってしまったから、もう最初から作り直すハメになった。最初から作り直す方が早い始末だ。そもそもJqueryとBootstrapの導入でやる作業なんてちょっとおしゃれな感じの動要素を入れたいとかそんな程度で、なぜここまで面倒くさいのか。こんなバカバカしいことするくらいなら
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
メタタグに直接書くこれでいい。マジで。
エレガントではなかろうし、いろいろ問題はあるかもしれないけど、少なくともこの方法はバージョンの違いとか全く関係ないし、現に動くし、バージョン変更もクソほど簡単だしでこれでいいんだ。もうつかれたよ。
UnsafeRedirectError
検索フォームでモデル検索したら出てきたエラー。
# パラメータを空白で分解して"+"で繋ぎなおせ
word = params[:find].split(/[[:blank:]]+/).select(&:present?).join('+')
# 繋ぎ直した文字列でアドレスにリダイレクト
redirect_to hoge_find_path + "?find" + word
ここで日本語を使うと、ActionController::Redirecting::UnsafeRedirectErrorというエラーを吐くようになった。
どうやら外部ホストにリダイレクトするような場合はセキュリティ的に止めているらしいが、別に外部ホストなんて送っていない。英数字で検索したときは問題ないことを考えると、マルチバイト文字がアドレスに含まれてると止められるっぽい。
ただこの対策は(よろしいかは別として)簡単で
redirect_to hoge_find_path + "?find" + word, allow_other_host: true
allow_other_host: trueというオプションを足せば通るようになった。少なくとも検索フォームで外部ホストどうこうもないんで、ここだけ指定する分には、まぁ大丈夫じゃないかなって気はする。