Rails

rails

Ruby

【Rails】文字コードのエラー対処法 ActionView::Template::Error

こんにちは。菜笑[なえ] (@nae310_)です。 今回はRailsの文字コードのエラー対処法 についてです。 エラー内容 ActionView::Template::Error (incompatible character encodings: UTF-8 and ASCII-8BIT): 対処法 .force_encoding("UTF-8") を使用して文字コードの情報をUTF-8に切り替えることで対応しました。 <%= display_meta_tags(default_meta_tag ...

rails

Ruby

【Rails】migrationの書き方 カラム追加・変更・削除

こんにちは。菜笑[なえ] (@nae310_)です。 今回はRailsのmigrationファイルの書き方(カラム追加・変更・削除)についての備忘録です。 カラム追加 def change add_column :users, :delete_flg, :boolean, null: false, default: false, comment: '削除フラグ', after: :name end ポイント add_column を使う 基本形: add_column :テーブル名, :カ ...

rails

Ruby

【Rails】環境変数の設定・呼び出し方法 [Docker, AWS]

こんにちは。菜笑[なえ] (@nae310_)です。 今回はRailsの環境変数をDockerとAWSへ設定する方法と、Railsでの呼び出し方法についてです。 以下の順番で解説していきます。 Dockerでの環境変数の設定方法 AWSでの環境変数の設定方法 Railsでの環境変数を呼び出し方法 Dockerでの環境変数の設定方法 Dockerではdocker-compose.yml に設定していきます。 version: '3' services: web: environment: A ...

プログラミング

投稿記事リンク一括取得サービスの使い方

こんにちは。菜笑[なえ] (@nae310_)です。 今回は先日自分で作った「投稿記事リンク一括取得サービス」についてまとめておきます。 なにが出来るのか 使い方 初めて個人サービスを作ってみて まとめ なにが出来るのか WordPressで投稿した記事のURLを一括で取得できます。 固定ページは含みません。投稿記事のみです。 なぜこれが必要で作ったのか?というと WordPressでパーマリンクを変更しようと思ったんですが、元々のURLから新しいURLにリダイレクト設定をする必要があることに気づき 手動 ...

rails

Ruby

【Rails】セレクトボックスの選択肢をDBから取得し、data属性も持たせる方法

こんにちは。菜笑[なえ] (@nae310_)です。 今回はRailsでDBから取得したデータを使ってセレクトボックスを作成し、optionにdata属性を持たせる方法についての備忘録です。 selectの基本的な使い方はこちらをどうぞ。 完成コード <%= form_with model: @post, url: posts_path, do |form| %> <%= form.select :user_id, @users.map{ |user| [user.name, user. ...

rails

Ruby

【Rails】複数のカラムを使ったユニーク制約の方法【uniqueness: scope】

こんにちは。菜笑なえです。 Railsで一意であることのバリデーションにはuniqueness を使います。今回は複数カラムを使ってユニーク制約をかける、uniqueness のscope オプションについて解説していきます。 バリデーション例 class Like < ActiveRecord::Base validates :tweet_id, uniqueness: { scope: :user_id } end 今回はTwitterを例に考えています。 Twitterのユーザーは、「1ツイー ...

rails

Ruby

【Rails】FatFreeのバグ解決法 [サイドバー検索と詳細検索]

こんにちは。菜笑なえです。 今回はRailsで作られたFatFreeというCRM(顧客管理システム)のバグについての備忘録です。 今回のバグは本家FatFreeでも確認できました。本家FatFreeにログインできない方は、この記事の最後に書いているログイン情報でログインしてみてください。 FatFreeバグ内容 今回対応したバグは2つです。 各項目の一覧表示画面を表示しているときに、サイドバーのチェックボックスを操作すると、ページ下部にあるCampaigns per page が未選択になる 詳細検索をし ...

rails

Ruby

【Rails】完全理解 formでセレクトボックスをつくるselectの使い方

こんにちは。菜笑なえです。 今回はRailsでformのセレクトボックスをつくるときに使う、select の使い方についての解説です。 完成コード <%= form_with model: @post, url: posts_path, do |form| %> <%= form.select :user_id, [['太郎', 1], ['二郎', 2]], { include_blank: true, selected: 1 }, { id: &quo ...

rails

Ruby

【Rails】link_toに任意のパラメータを付与する方法

こんにちは。菜笑なえです。 今回はlink_to に任意のパラメータを付与する方法についてです。 任意のパラメータのみ idパラメータと任意のパラメータ ネストしたパラメータ 上記3つのパターンについて記載していきます。 任意のパラメータのみ viewでの記載 users_path(group_id: 1, team_id: 2) 変換されたURL http://localhost:3000/users?group_id=1?team_id=2 受け取りデータ Parameters {"grou ...

rails

Ruby

【Rails】Herokuにデプロイする時のES6コンパイルエラー解決方法

こんにちは。菜笑なえです。 前回に引き続きHerokuデプロイ時のエラー解決法についての備忘録です。 今回はプロダクションモードで動かす時のES6コンパイルエラーについてですが、Herokuのbundlerに関するエラーでお困りの方はこちらの記事もご覧ください。 解決法 config/environments/production.rb のconfig.assets.js_compressor 部分を書き換えます。 変更前 config.assets.js_compressor = :uglifier 変 ...

heroku

Ruby

【2019年7月最新】Rails Herokuデプロイ時のbundlerエラー解決方法 [かなりハマった...]

こんにちは。菜笑なえです。 今回はRailsアプリをHerokuにデプロイした時のエラーについての備忘録です。 エラー文にPush rejected とあったので、gitが原因かなとか思いましたが、bundler が原因でした。 しかも2019年6月25日にHerokuの仕様が変更されたことが影響していたので、今見てるあなたにも当てはまる可能性 大 です! 解決法 Bundlerのバージョンを2.0.2 に変更すれば解決です。 現在の設定はGemfile.lock から確認してください。 BUNDLED ...

rails

Ruby

【Rails】publicにある静的ページにリダイレクトする方法

こんにちは。菜笑なえです。 本日は、Railsでpublicにある静的ページにリダイレクトする方法についての備忘録です。 サクッといきます。 publicにあるページにリダイレクトする方法 redirect_to '/maintenance.html' これで http://localhost:3000/maintenance.html のページにリダイレクトすることができます。 環境 Rails 5.2 おわりに メンテナンスページにリダイレクトした時にどうだっけと迷ってしまいました。 ...

rails

Ruby

【Rails】form送信時に'utf8=✓'を消す方法

こんにちは。菜笑なえです。 本記事の内容 formを送信したときに、パラメータに付く'utf8=✓'を削除する方法です。 form_withでの設定 form_forでの設定 form_tagでの設定 上記3つのformについて記載していきます。 form_withでの設定 :skip_enforcing_utf8 のオプションを設定します。 form_with url: create_path, skip_enforcing_utf8: true do |form| end form_forでの設定 e ...

rails

Ruby

Rails link_toメソッドをブロックにして、要素をネストさせる方法

こんにちは。菜笑なえです。 今回は「Rails link_toメソッドをブロックにして、要素をネストさせる方法」という内容で書いていきます。 事象 一行で書いていたlink_to を、ブロックにして要素をで囲もうとした時のミスについて。 コード状況 一行で書いていたとき。 = link_to(表示名, root_path) これをブロックにしたいと思い書いたもの。 = link_to(表示名, root_path) do %p ネスト NoMethodError と言われました。 解決方法 こちらで解決で ...

rails

Ruby

Rails ActionNotFound エラーの対応 404ページを表示させる

こんにちは。菜笑[なえ]です。 今回は「Rails ActionNotFound エラーの対応 404ページを表示させる」という内容で書いていきます。 事象 Railsで存在しないページにアクセスしたら、404ページを表示させる。ということをやっている時のエラーです。 エラー内容 AbstractController::ActionNotFound (The action 'render_404' could not be found for ApplicationController): ...

rails

Ruby

Rails マイグレーションファイルを使ってカラムのデータ型を変更する方法

こんにちは。菜笑[なえ]です。 今回は「Rails マイグレーションファイルを使ってカラムのデータ型を変更する方法」という内容で書いていきます。 事象 マイグレーションファイルを使って、float型からdouble型に変更したい。 解決方法 マイグレーションファイルの作り方。 $ rails g migration change_datatype_カラム名_of_テーブル名 change_datatype_カラム名_of_テーブル名 の部分は任意の書き方で大丈夫なので、他のファイル名でもいいです。 マイグ ...

rails

Ruby

Rails カラム名を変えてアソシエーションを設定する!foreign_keyを使おう

こんにちは。菜笑[なえ]です。 今回は「Rails カラム名を変えてアソシエーションを設定する!foreign_keyを使おう」という内容で書いていきます。 事象 create_table :shops do |t| t.string :name end create_table :customers do |t| t.string :name t.integer :visit_shop_id end このテーブルで構成で、以下のアソシエーションを実現させたいと思います。 class Shop < ...

rails

Ruby

Rails newしたあと GitHub連携と便利なalias設定

こんにちは。菜笑[なえ]です。 今回は「Rails newしたあと GitHub連携と便利なalias設定」という内容で書いていきます。 事象 Gemをシステムではなくvendor/bundle に入れたい人むけです。 Rails で新規プロジェクト作成したあと、GitHub連携するときに 「.gitignore どうすればいいんだっけ。」 となるのでメモ。 ついでにbundle exec のエイリアス設定も載せておきます。 GitHub連携 .gitignore に以下を追加します。 /vendor/b ...

rails

Ruby

Rails 新規プロジェクト作成 bundle installで発生するmysql2エラーの解消法

こんにちは。菜笑[なえ]です。 今回は「Rails 新規プロジェクト作成 bundle installで発生するmysql2エラーの解消法」という内容で書いていきます。 事象 Railsで新規プロジェクト作成時にbundle install でエラー発生してハマりました。 いろいろと試したことを載せているので、とりあえず解決法を知りたい方は最後の「解決方法」をご覧ください。 また、エラー解消して無事にrails s まで辿りつけましたが、内容に間違いがあれば優しくご指摘よろしくお願いします。 ディレクトリ ...

rails

Ruby

Rails シンボルのハッシュと文字列のハッシュをマージしたい

問題 キーがSymbol のハッシュ hash_a = { :a => 'あ', :b => 'い' } キーがString のハッシュ hash_b= { 'a' => '1', 'b' => '2' } これらをマージしても値が上書きされません。 hash_a.merge(hash_b) => { :a=>"あ", :b=>"い", "a"=>"1", "b"=>"2" } 求めていたのはこんな感じです。 { :a=>'1', :b=> ...