三蔵開発メモ

Web開発やインフラ関連のメモを共有します

Ruby On Rails

Ruby On RailsでControllerからViewへのリダイレクトの際にメッセージ等レスポンスを返す方法

登録フォームなどをRailsで書いていると、登録成功、失敗それぞれのときにView側にメッセージを返したくなる時がある。 ajaxなどを使ってもできるが、flashを利用するとRailsのみで実現できる。 controller側の例 def create # 何らかの処理 if 成功した場合…

Ruby On Rails、Slimのlink_toでget以外のメソッドを送信したいとき

管理画面の改修をしており、テーブルにある行の1つを削除したいとき、 その行に削除ボタンを設置してそのまま削除処理をおこないたくなるような場面に遭遇した。 = link_to '編集', edit_user_path(user_id) 編集画面に遷移させたいなどであればrotingやcon…

存在するかわからない子データを取得する場合は「&.」が便利

超基本だがよく使うのでメモ。 - users - id - name - user_profiles - id - user_id - age 上記のような1対1の関係のテーブルがある場合、Railsのモデルでuserからuser_profileのageにアクセスする場合は、 user.user_profile.age といったようにアクセスで…

Ruby2系をRuby3系にアップグレードしたらbootsnapのエラーがでた時の対応

Ruby2.7.5から3.0.4にあげたときrails sを実行時にbootsnapがエラーを出した。 Railsは6.1.5。 .rbenv/versions/3.0.4/lib/ruby/gems/3.0.0/gems/bootsnap-1.13.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:17:in `require': cannot load su…

Railsアップグレード等でmini_racerやlibv8-nodeなどがビルドエラーになって更新できない問題の対応

Railsの6.0から6.1にアップグレードするだけでもかなりハマってしまったのでメモ。 bundlerを最新にする これだけでも解決することがある。 BUNDLER_VERSION=2.3.9 gem install bundler -v ${BUNDLER_VERSION} bundle _${BUNDLER_VERSION}_ install --jobs=4…

Railsでransackを使った検索を実装した時、検索結果をupdate後も保持するためにしたこと

Ruby 2.4.3 Rails 5.1.6 ransackというgemを利用すると以下のように簡単に検索が実装できる。 こちらの記事がとても参考になった。 Ransackで簡単に検索フォームを作る73のレシピ - 猫Rails ただindex内でupdateを呼んで更新をかけて、またindexにリダイレク…

bundle install で古いバージョンのgemがmacでインストールできなかった場合の対処方法

自分のrails環境でbundleインストールをした際、 ffiというgemの古いバージョンがインストールできなかったため、以下のように設定ファイルを作成するといいことを教わった。 railsプロジェクトのカレントディレクトリで以下を実行 mkdir .bundle cd .bundle…

Mac OS X CatalinaにRuby On Rails6環境を構築

勉強用にいれてみました。備忘録メモ。 以下の条件で構築しています。 Xcode インストール済み Command Line Tools インストール済み Homebrew インストール済み rbenvをインストール Rubyのバージョン管理をできるrbenvをインストール brew install rbenv r…