- 0.0.1. 【Rails】config/localesに新規追加したファイルが読み込まれない【I18n】
- 0.0.2. #Rails + #rspec + #VCR で SECRET_KEY など秘密の環境変数・情報をフィルタリングする設定
- 0.0.3. index.html+mobile.haml なviewをrspecする
- 0.0.4. テーブルの結合ができない。。Mysql2::Error: Column ‘updated_at’ in order clause is ambiguous
- 0.0.5. rails メッセージ機能実装
- 0.0.6. Railsで検索窓で入力された文字列を使ってDBを検索する
- 0.0.7. config以下のファイルが更新されないとき
- 0.0.8. Railsチュートリアル 第13章 ユーザーのマイクロポスト – 基本的な画像アップロード
- 0.0.9. 中間テーブルを経由して別テーブルから取得した値をviewに反映させる方法
- 0.0.10. 【Rails】メールを送信する(ローカル)
- 1. Sample#hoge
- 1.0.1. 【Rails】簡単seedデータの挿入方法
- 1.0.2. 【Rails】FontAwesome
- 1.0.3. 【Rails】ブックマーク機能のajax化
- 1.0.4. gem install で特定のversionをインストールする
- 1.0.5. 【Rails】ラジオボタンの実装
- 1.0.6. 【Rails】kaminariを使用して基本的なページネーション機能を実装する
- 1.0.7. [Rails] setting.rb編集後の反映コマンド
- 1.0.8. [Rails] lambdaを使う
- 1.0.9. 「ActiveModel::ForbiddenAttributesErrorの対処方法
- 1.0.10. 【Ruby on Rails】devise_token_authでTwitterログイン機能の実装
【Rails】config/localesに新規追加したファイルが読み込まれない【I18n】
# はじめに
タイトルの通りです。
Railsで多言語化対応をする際にconfig/localesにymlファイルを追加していくと思いますが、それが読み込まれない場合の対応策です。# 結論
早速結論なのですが、超シンプルで、`Railsサーバを再起動する`です。。。
既存ファイルに訳文を追加する場合はRailsサーバの再起動は不要ですが、新規ファイルを追加した場合はRailsサーバの再起動が必要です。ちなみに少しこの内容と外れるかもしれませんが、RailsガイドにRailsの初期化プロセスについて記載があったので参考としてリンクを貼っておきます。
[Railsの初期化プロセス](https://railsguides.jp/initialization.html)# おわりに
単純なミスで恥ずかしいのですが、めっちゃハマって辛かったので記事にしてみました。(typoやインデント、ディレクトリ構成等見直しまくりました。。。)
案外検索しても出てこず、他ごとしてたら急に「これ、サーバ再起動案件じゃね。。。?」と気が付いた次第です。はい。
#Rails + #rspec + #VCR で SECRET_KEY など秘密の環境変数・情報をフィルタリングする設定
# 例
`spec/support/vcr_config.rb`
“`rb
VCR.configure do |config|
config.filter_sensitive_data(‘‘) { ENV[‘SOME_SECRET_KEY’] }
end
“`# Ref
VCR で外部 API へのリクエストをダンプするときに機密情報をマスクしたい – Qiita
https://qiita.com/gotchane/items/c2c29c0063bd44246510# Original by Github issue
https://github.com/YumaInaura/YumaInaura/issues/2926
index.html+mobile.haml なviewをrspecする
“`ruby
before_action do
request.variant = :mobile if ua.match(/Android/)
end
“`とかするとviewを切り替えられる `ActionPack Variants` という機能[^1]で
view specを書く方法“`ruby
# spec/views/users/index.html+mobile.haml_spec.rbRSpec.describe ‘users/index.html+mobile.haml’, type: :view do
it do
render
end
end
“`とやると 「`html+mobile` 何ていうフォーマットねーよ」 と怒られる
なので `render` の呼び出しで正しい情報を与える“`ruby
# spec/views/users/index.html+mobile.haml_spec.rbRSpec.describe ‘users/index.html+mobile.haml’, type: :view do
テーブルの結合ができない。。Mysql2::Error: Column ‘updated_at’ in order clause is ambiguous
# はじめに
Railsでeager_loadしようとしたときに、下記のようなエラーが出て解消に時間がかかったのでまとめました。“`
Mysql2::Error: Column ‘updated_at’ in order clause is ambiguous
“`# やりたいこと
user の updated_at を指定した期間のものだけ抽出するために、テーブルの結合をしたい。# なぜeager_loadできないのか
これを実行すると、
“`ruby:user.rb
User.where(“updated_at >= ‘2020/01/01’ and updated_at <= '2020/01/31'").eager_load(:post) ``` MySQLのエラーが出る。 ``` Mysql2::Error: Column 'updated_at' in order clause is ambiguous ``` なぜか。 updated_at は User にも Post にも存在しているため、どちらの updated_at なのか判別がつかな
rails メッセージ機能実装
少しまがあきました
以前の続きを# 目次
1,モデルを作成する
2,ルーティングを設定する
3,該当するアクションをコントローラに定義する
4,メッセージ送信機能を実装する
5,グループにメッセージを表示する
6,サイドバーに最新のメッセージを表示する
7,細かいリンクの作成# 1,モデルを作成する
“`bash:ターミナル
$ rails g model message
“`“`ruby:202XXXXXXXXXXX_create_messages.rb
class CreateMessages < ActiveRecord::Migration[5.2] def change create_table :messages do |t| t.string :content t.string :image t.references :group, foreign_key: true t.references :user, foreign_key: true t.timestamps e
Railsで検索窓で入力された文字列を使ってDBを検索する
# whereメソッドとLIKEの説明
whereメソッドとは、DBに対して任意の条件で検索して、データを取得するためのメソッド。
LIKEは、曖昧検索を行う仕組み。
ここでいう曖昧検索とは、「文字列が”a”ではじまる単語」とか「”06″で始まる電話番号」などの曖昧な表現を検索する仕組みです。まず前提として、usersテーブルから特定の文字列で始まるユーザー名を検索しています。
このコードはコントローラに記述されていて、リクエストで入力された値がparams[:keyword]で送られてきています。以下のコードを見ながら説明します
“`ruby:qiita.rb
@users = User.where(“name LIKE ?”, “%#{params[:keyword]}%”)
“`
三段階にわけて説明します。
①User.where
モデル名.whereとすることで、そのモデルのテーブルを検索するよう指示を出します。
②whereの第一引数 “name LIKE ?”
まずLIKEの前で、検索するカラムを指定します。ここではnameカラムを検索するようにしています。
config以下のファイルが更新されないとき
config以下のファイルはサーバーの再起動しないと変更が更新されません
Railsチュートリアル 第13章 ユーザーのマイクロポスト – 基本的な画像アップロード
# 作成中のアプリケーションから、画像アップローダー「CarrierWave」を使えるようにする
画像投稿機能を実装するために必要な画像アップローダーとして、今回は、「CarieerWave」という画像アップローダーを用います。CarrierWaveをRailsアプリケーションで用いるためには、Railsアプリケーション側に`carrierwave`というgemが必要となります。
早速`Gemfile`を更新していきましょう。
“`diff:Gemfile
source ‘https://rubygems.org’gem ‘rails’, ‘5.1.6’
gem ‘bcrypt’, ‘3.1.12’
gem ‘faker’, ‘1.7.3’
+ gem ‘carrierwave’, ‘1.2.2’
+ gem ‘mini_magick’, ‘4.7.0’
gem ‘will_paginate’,
中間テーブルを経由して別テーブルから取得した値をviewに反映させる方法
chatアプリケーション制作時に、中間テーブルを経由して、別のテーブルから特定の値を出力する方法がわからず、苦しめられたので、その備忘録に。
###やりたいこと
・現在のchatグループのメンバーリストをヘッダーに反映させたい。
(下画像のピンク色の部分)![1.png](https://gyazo.com/344cce0d97d0f1ac471b81be47a9bdd1.png)
hamlは以下の通り
“`haml:_main_chat.html.haml
.chat-main
.top
.top__left-box
.top__left-box__group-name
= @group.name
.top__left-box__members
-# ここに何を記述すれば良いかが今回の論点
-# =@group.users.name 左記では上手く呼び出せない
.top__edit-btn
= link_to edit_group_path(current_use
【Rails】メールを送信する(ローカル)
##基本
“`terminal
$ rails g mailer SampleMailer hoge
“`
メーラーとViewファイル×2(HTML版とプレーンテキスト版)が生成されます。“`app/mailers/sample_mailer.rb
class SampleMailer < ApplicationMailer def hoge @greeting = "Hi" mail to: "to@example.org" end end ``` ```erb:app/views/sample_mailer/hoge.html.erbSample#hoge
<%= @greeting %>, find me in app/views/sample_mailer/hoge.html.erb
“`
“`erb:app/views/sample_mailer/hoge.text.erb
Sample#hoge<%= @greeting %>, find me in app/views/sample_m
【Rails】簡単seedデータの挿入方法
#概要
Railsにおけるseedデータの挿入方法メモ
Gemを利用してデータベースに複数の初期データを挿入していく。#やり方
Gemfileに
“`
gem ‘faker’
“`“`
$ bundle install
“`https://github.com/stympy/faker
データを生成できるものは上記READMEに載っている。例えば、
a = Faker::Movies::StarWars.character
でaの中にスターウォーズキャラクターの名前が入り、初期データとして作成できる。`db/seeds.rb`
に以下追記。
“`db/seeds.rb
100.times do |n| #100件シードデータを作成するということ。
name = Faker::Movies::StarWars.character
email = Faker::Movies::StarWars.droid
password = “password”
User.create!(name: name,
emai
【Rails】FontAwesome
準備
–
Gemfileに
`gem ‘font-awesome-rails’`を記載。
ターミナルで`gem ‘font-awesome-rails’`を実行。“`bash:ターミナル
bundle install
“``application.css`に`*= require font-awesome`を記載。
“`css:app/assets/stylesheets/application.css
/*
(省略)
*= require font-awesome
(省略)
*/
“`使い方
–
``ヘルパーメソッドを使用できるので
`<%= fa_icon("home") %>`
と書くこともできる。例えば
`<%= fa_icon("home 5x") %>`
で5倍。
【Rails】ブックマーク機能のajax化
[【Rails】ブックマーク(お気に入り)機能](https://qiita.com/hiro266/items/8a0374155cd18adbd7cf)の続きでブックマークボタンをajaxします。
# 環境
`Rails 5.2.3`
`mysql 5.7.28`
`gem jquery-rails`
→インストールしてapplication.jsで読み込んでください。
`rails-ujs`をapplication.jsで読み込んでください。# 実装
Railsでajax通信を行う方法は大きく二つあります。
1. remote: trueをリンクボタンに設定
2. JSファイルに任意のタイミング(clickイベント)でajax通信を発火させる今回は`remote: true`を使用してajax通信を実装します。
## ブックマークボタンクリック時にajax通信を行う
ajax前の現在の状況を確認します。“`ruby:bookmarks_controller.rb
class BookmarksController < ApplicationController
gem install で特定のversionをインストールする
“`
gem install gem_name -v version_number
“`“`
gem install gem_name –version version_number
“`“`
gem install gem_name:version_number
“`
コロンでもversion指定ができる
https://github.com/rubygems/rubygems/blob/master/lib/rubygems/commands/install_command.rb
> Can’t use –version with multiple gems. You can specify multiple gems with version requirements using gem install ‘my_gem:1.0.0’ ‘my_other_gem:~>2.0.0’
【Rails】ラジオボタンの実装
ちょっと複雑だったのでまとめます。`customer`はモデル名です。
“`erb:erb
<%= f.label :receive_news, '受け取る', value: 1 %>
<%= f.radio_button :receive_news, '1' %><%= f.label :receive_news, '受け取らない', value: 0 %>
<%= f.radio_button :receive_news, '0' %>
“`
“`html:出力されるhtml
【Rails】kaminariを使用して基本的なページネーション機能を実装する## 前提
bundlerを使用して、Gemfileでgemを管理していることを想定しています。## 使い方
### 準備(インストール)
1.Gemfile内に`gem kaminari`を記述“`ruby
# Gemfile
gem ‘kaminari’
“`2.kaminariをインストール
“`shell
$ bundle install
# 「bundle」だけでもOK
“`### 設定
#### 設定ファイル作成
1.設定ファイルを作成する“`shell
$ rails g kaminari:config
“`2.設定ファイルが作成される
config/initializersディレクトリ配下に「kaminari_config.rb」ファイルが作成されます。
作成されたファイルをいじることで、「kaminari」のデフォルト設定を変えることができます。以下の記事に詳しく書かれていたので参考にしてみて下さい。
[Railsライブラリ紹介: ページングを行う「kaminari」](https://www.techscore.com/
[Rails] setting.rb編集後の反映コマンド
rails consoleを使用しているときは、モデルの更新があったらコマンドを叩いて更新しないと反映されずにハマるので、メモ
`pry(main)> Settings.reload!`
[Rails] lambdaを使う
アクション内にサクッと追加するファンクションを定義したい時に使うっぽい。
可読性を考えると後者の方かな。“`ruby
def aaa
a = ->(num) {
puts num * 100
}
a.call(1)
end
“`
or“`ruby
def aaa
a = lambda{|num|
puts num * 100
}
a.call(1)
end
“`
「ActiveModel::ForbiddenAttributesErrorの対処方法
最近の勉強で学んだ事を、ノート代わりにまとめていきます。
主に自分の学習の流れを振り返りで残す形なので色々、省いてます。
Webエンジニアの諸先輩方からアドバイスやご指摘を頂けたらありがたいです!#なぜエラーが発生したか?
このエラーが起きた状況は、Active Adminで作成したユーザー管理画面において編集機能を追加するために
actionsに:editを追加した所、[Routing Error No route matches [PATCH] “/admin/users/1″が発生](https://qiita.com/hirokik-0076/items/84123e00432087cf15ba/)
して、それを解決した後、編集したデータを更新した際に発生いたしました。“`ruby
ActiveModel::ForbiddenAttributesError in Admin::UsersController#update
ActiveModel::ForbiddenAttributesError
“`##なんのエラーか?
A(アンサー):Strong Par
【Ruby on Rails】devise_token_authでTwitterログイン機能の実装
#前回の記事
[DockerでRuby on Rails + Reactを別々にアプリ作成する環境構築手順](https://qiita.com/dl10yr/items/b76969da1c2c33595a4a)
#やったこと
Rails(APIモード)でdevise_token_authを用いたTwitterログイン機能の実装
#参考記事
この記事を大変参考にさせていただきました。
[Rails 5 API + Vue.js + devise_token_authでTwitterと連携するSPAを作る(①RAILS編)](https://qiita.com/natsukingdom-yamaguchi/items/15142bd4ad77679afb04#3-rails-api%E3%81%ABtwitter%E8%AA%8D%E8%A8%BC%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B)
#実装手順
###Gemfileの追記
モジュールインストールのためにGemfileに追記“`ruby:Gemfile
###auth/Twi