Rails関連のことを調べてみた2021年11月14日

Rails関連のことを調べてみた2021年11月14日

変数の命名規則について!

#変数の命名規則

前回の続きです!

変数には名前をつけることができます!

名前は自由に決められますが、一定のルールがあり、それを守らなくてはいけません!

“`php
命名規則 説明

1,変数の中身が何かわかる! どんな名前もつけられますが,aaaのような意味のない名前は避けましょう!

2,小文字で始める! 大文字からも開始できますが、とくに理由がない場合は避けましょう!

3,_(アンダーバー)で始めない! _からも開始できますが,とくに理由がない場合は避けましょう!(2文字目以降には使えます!)

4,数字で始めない! 1文字目に使うとエラーが生じます!(2文字目以降には使えます!)

5,日本語を使わない! 文字列以外では日本語は使えないため,変数名も日本語は使えません!

6,スペースを含めない! 名前にスペースが入るとエラーが生じます!

7,予約語

元記事を表示

railsチュートリアル第12章 パスワードを再設定する

##パスワードを再設定する
次はPasswordResetsコントローラのeditアクションの実装を進めていきましょう。
統合テストを使ってうまく動作しているかのテストも行っていきます。
###editアクションで再設定
今回はこのメールアドレスを保持するため、隠しフィールドとしてページ内に保存する手法を使い作成
####パスワード再設定のフォーム
app/views/password_resets/edit.html.erb

“`html
<% provide(:title, 'Reset password') %>

Reset password

<%= form_with(model: @user, url: password_reset_path(params[:id]), local: true) do |f| %>
<%= render 'shared/error_messages

元記事を表示

railsチュートリアル第12章 送信メールのテスト

###送信メールのテスト

####パスワード再設定用メイラーメソッドのテストを追加する
test/mailers/user_mailer_test.rb

“`rb
require ‘test_helper’

class UserMailerTest < ActionMailer::TestCase test "account_activation" do user = users(:michael) user.activation_token = User.new_token mail = UserMailer.account_activation(user) assert_equal "Account activation", mail.subject assert_equal [user.email], mail.to assert_equal ["noreply@example.com"], mail.from assert_match user.name, mail.body.enc

元記事を表示

railsチュートリアル第12章 パスワード再設定のメール送信

##パスワード再設定のメール送信
createアクションがほぼ動作するところまで持っていきました。
残すところは、パスワード再設定に関するメールを送信する部分です。

###パスワード再設定のメールとテンプレート

####パスワード再設定のリンクをメール送信する
app/mailers/user_mailer.rb

“`rb
class UserMailer < ApplicationMailer def account_activation(user) @user = user mail to: user.email, subject: "Account activation" # mailにsubjectキーを引数として渡しています。 # この値は、メールの件名にあたります end def password_reset @user = user mail to: user.email, subject: "Password reset" end end ``` ####パスワード再設定のテンプレート(テキス

元記事を表示

値に名前をつけて使う!

#同じ値を何度も使う!

値を使うたびに、同じ値であっても毎回記述していました!

しかし、毎回同じ値を書くのはめんどうですね!

例えば、円の面積の計算を行うプログラムを作成する場合、毎回円周率の値を書くのは非常に大変な作業です!

“`php:【例】同じ値を毎回記述する
# 半径3の円の面積
3 * 3 * 3.14159

# 半径10の円の面積
10 * 10 * 3.14159

# 半径11の円の面積
11 * 11 * 3.14159
“`

もし円周率を3.14159ではなく3.14へ変更することになったら、記述をすべて書き換える必要があります!

この問題を解決するのが『変数』という仕組みです!

#①.変数

変数とは、値を入れる箱のようなものです!

この箱には名前をつけることができ、どんな値が入っているのかを簡単に識別できるようになります!

この名前を変数名と言います!

変数を利用することで、値を再利用したい場合に、変数の名前を使うだけで呼び出すことができます!

変数の使い方について、順に説明します!

#②.変数の宣言と定義

変数を作ることを変数の

元記事を表示

Cloud9 で rails server 終了せずにターミナルを閉じてしまった時の対処法

## この記事について
`rails server`起動したまま、ターミナルを間違って閉じてしまった?という時の対処法があまりにも簡単だったので、記事にしてみました。`A server is already running`エラーでググると、`kill`コマンドや`server.pid`の削除などが出てくると思いますが、難しいことをしなくても対処できるのでお試しください?

### 事前に確認する

ブラウザ上で開いてあるローカルサーバーを**リロードしてみて、もう繋がらない状態であれば今回の対処は不要**です。 新しくターミナルを開いて`rails server`し直し、作業に戻りましょう?

## 対処法
### 1. ターミナルを新しく開く
元の二分割画面で開きたい場合は、ファイルの左上にあるメニューから分割スタイルを選択します。
[![Image from Gyazo](https://i.gyazo.com/e5dff84a2127df50e49bb89758328d40.png)](https://gyazo.com/e5dff84a2127df50e49bb897583

元記事を表示

Railsでページごとに読み込むCSSを限定する

Railsで以下の課題があり、解決のためのコードを試し書きしたので概要を記載する

– ページ単位でCSSのスコープを限定したい
– 不要なCSSファイルの読込みを削減したい

### Disclaimer
この記事は、以下の記事を参考に自分用にカスタマイズしたもの。
[Rails の CSS にスコープを持たせてファイル分割する](https://tech.basicinc.jp/articles/166)

意図通りに動くのは確認したが、実運用に耐えるのかは不明。
ページ単位は細かすぎて割に合わないので、普通にController単位のスコープ限定/呼び出しにしたほうが良さげ。

### 課題
railsで以下を実現したい。

#### ページ単位でCSSのスコープを限定したい
常にビューテンプレートのトップレベルに一定のクラス名を設定すれば実現できるが、
もう少し強制力をもたせたい。

#### 不要なCSSファイルの読みこみを削減したい
現状では、「全てのページで全てのCSSファイルを読み込んでいる」ので、
ページ単位で必要なものだけ読み込む形にしたい。

現状はこういう感

元記事を表示

Rubyのバージョンアップとrails new時のエラー対処方法

先日、Rubyのバージョンアップして、新しいバージョンでRailsアプリを作成しようとしたら、エラーが発生しました。
その時のRubyのバージョンアップ実施方法とエラーの原因、対処方法について備忘録としてまとめました。

###環境
MacOS 11.5.2
Ruby 2.6.6(バージョンアップ前) → 3.0.2(バージョンアップ後)
Rails 6.1.4

###バージョンの確認
バージョンをあげる前に、現在のrubyのバージョンを確認する。

“`
$ ruby -v
ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-darwin19]
$ rbenv version
2.6.6 (set by /Users/username/.rbenv/version)
“`

###homebrewのバージョンアップとrbenvの導入
homebrewのアップデートとrbenvをインストールを実施します。
rbenvは、Rubyのバージョン管理ツールで、複数のrubyを管理、切り替えできます。

“`
# homebrewを最新

元記事を表示

Railsで多階層カテゴリーを実装してみた

# 目標
![ezgif.com-video-to-gif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579893/823563e9-302b-6a20-b712-0cb207d73472.gif)

# 実装
### 1.Gemを導入

“`ruby:Gemfile
# 追記
gem ‘ancestry’
“`

“`terminal:ターミナル
$ bundle
“`

### 2.カラムを追加

データ量が多くなる可能性があるので念の為`index`を張っておきます。

“`terminal:ターミナル
$ rails g migration AddAncestryToCategory ancestry:string:index
“`

“`terminal:ターミナル
$ rails db:migrate
“`

“`ruby:schema.rb
create_table “categories”, force: :cascade do |t|
t.string “na

元記事を表示

RSpec入門者向けのTIPSをまとめた

## この記事はなに
RSpecを始めたばかりの方向けにRSpecの基本部分や「あ、これはこうやって書けば良いのか」といったTIPSをまとめた記事です。随時記事は更新していきます。(※最終更新:2021/11/13)

## describe vs context
describeとcontextは技術的には同じです。describeではクラスやシステムの機能に関するアウトラインを記述し、contextでは特定の状態に関するアウトラインを記述します。

## let vs let!
letは呼ばれた時に初めてデータを読み込む、遅延読み込みを実現するメソッドです。it/exampleブロック内では読み込みされた結果がキャッシュされます。

“`ruby
RSpec.describe do
describe “letの挙動” do
let(:current_time) { Time.now }
it do
puts current_time # 2021-11-13 12:05:44 +0900
sleep(3)
puts cu

元記事を表示

【Rails】ラベル名を日本語にする

#概要
ユーザーの登録画面や投稿画面で表示されるラベル名と入力エラーメッセージを日本語にしてみました。

:::note info
macOS Monterey
Ruby 2.6.5
:::

#deviseの場合

devise用のビューファイルを作成

“`
% rails g devise:views
“`

“`ruby:config/application.rb
module TravelClip0406
class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. config.load_defaults 6.0 config.i18n.default_locale = :ja #追記する ``` ```ruby:Gemfile gem 'rails-i18n' #一番下に追記する ``` ターミナルで以下のコマンドを実行し、ローカルサーバーの再起動まで行う。 ``` %

元記事を表示

アイコンをランダムにしゃべらせる

![スクリーンショット 2021-11-13 0.11.31.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2245182/1a88cc01-e42e-7d37-3de1-3d0bc48d4e32.jpeg)

こんなかんじでロゴをホバーしたらランダムに喋らせる試み
ホバーするたびに内容が変わるようになっている

## 開発環境
`ruby 2.6.5`
`Ruby on Rails 5.2.5`

## 前提
`jQuery` を導入している
喋らせたいロゴをつくってある

## 本題

吹き出しは以下を参考にした

https://blog.raizzenet.com/balloon-on-image-on-mouse-hover/

ランダムに喋らせる `JS` のスクリプトは以下

“`:js
document.addEventListener(“turbolinks:load”, function(){
$(‘.sample’).hover(function() {

let

元記事を表示

rspec に css を反映するにはプリコンパイルが必要

テストを書いていて謎のエラー
エラー内容は

“`
1) User 認証機能 ユーザー登録したときに ホームに遷移すること
Failure/Error: raise ActionController::RoutingError, “No route matches [#{env[‘REQUEST_METHOD’]}] #{env[‘PATH_INFO’].inspect}”

ActionController::RoutingError:
No route matches [GET] “/%E5%90%8D%E7%A7%B0%E6%9C%AA%E8%A8%AD%E5%AE%9A%E3%81%AE%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3.png”
“`

こんな感じ
`UTF-8` でデコードして要約すると
`名称未設定のデザイン.png` っていうルーティングがありません
っていう意味。謎

## 開発環境
`ruby 2.6.5`
`Ruby on Rails 5.2.5`

## 前提
rspec でテストを

元記事を表示

img タグの src のパスの頭に / を忘れるとHTTPリクエストが飛ぶ

エラーは起きないんだけどターミナル上で謎のルーティングエラーが出る

[![Image from Gyazo](https://i.gyazo.com/4e0faf910c1d0cb9689115aa2f2ade67.png)](https://gyazo.com/4e0faf910c1d0cb9689115aa2f2ade67)

こんなふうにちゃんとしたリクエストは流れてて
画面遷移した後に謎のリクエストが発生していた

## 開発環境
`ruby 2.6.5`
`Ruby on Rails 5.2.5`

## なにが悪かったか

これの何が悪かったのかというと

“`
img src=”signin.png” class=”topimg”
“`
これ

これは

[![Image from Gyazo](https://i.gyazo.com/7af18686c0d97863694595baab3cd1ab.png)](
://gyazo.com/7af18686c0d97863694595baab3cd1ab)

上の画像の `img` なんだけど
`src` の中の

元記事を表示

一定の文字数以上を … にするメソッド

良いメソッドを見つけた

[![Image from Gyazo](https://i.gyazo.com/48790baf519c482f486bc797f4b682b5.png)](https://gyazo.com/48790baf519c482f486bc797f4b682b5)

こんな風にユーザーから受け取った文字数によってはUI が崩れてしまう箇所で

https://qiita.com/ishidamakot/items/2e74d980b3a338e4c784

これを使えば

[![Image from Gyazo](https://i.gyazo.com/6ea818f187f21f68b74969dbfae37334.png)](https://gyazo.com/6ea818f187f21f68b74969dbfae37334)

こうなる

元記事を表示

画像のプレビュー機能とドラッグアンドドロップ

[![Image from Gyazo](https://i.gyazo.com/e273a1e767e73bc02153365a55fc2875.png)](https://gyazo.com/e273a1e767e73bc02153365a55fc2875)

こんなかんじの UI の画像フォームをつくった

ドラッグアンドドロップで画像を認識もする

で画像をいれると

[![Image from Gyazo](https://i.gyazo.com/99746e8f31bf17afd2f7e11f36412373.png)](https://gyazo.com/99746e8f31bf17afd2f7e11f36412373)

非同期で変化する

## 開発環境
`ruby 2.6.5`
`Ruby on Rails 5.2.5`

## 前提
`jQuery` を導入している
`bootstrap` を導入している
`noimage.png` というファイルが最初の画像

## ドラッグアンドドロップ

以下を参考にした

https://blog1.mammb.com/e

元記事を表示

form.submit と form.button の違いを1つ発見した

## 前提

`rails` でビューを書いている
`bootstrap` を導入している

[![Image from Gyazo](https://i.gyazo.com/d2644224e7c7cbf37fcd2fffdbe87c83.png)](https://gyazo.com/d2644224e7c7cbf37fcd2fffdbe87c83)

こんな感じのフォームがある

これは

“`
.actions
= form.button “送信する”, class: “btn btn-primary”
“`

こういうコード

`remote: true` だから `ajax` で更新する形にしてるんだけど

これを

“`
.actions
= form.submit value: “送信する”, class: “btn btn-primary”
“`

ってすると更新のタイミングで一瞬登録するっていうボタンに変わる
`ajax` の場合は `button` のほうがいいかもって思った

元記事を表示

bootstrap ちょこっと隙間をあけたいときの css

## 開発環境
`ruby 2.6.5`
`Ruby on Rails 5.2.5`

## 前提
bootstrap を導入している

## 本題

[![Image from Gyazo](https://i.gyazo.com/b074a0b62e7b3c828f13e3bbdb4e7f04.png)](https://gyazo.com/b074a0b62e7b3c828f13e3bbdb4e7f04)

こんかんじのを

[![Image from Gyazo](https://i.gyazo.com/42cee93ded5cad3d572150b8a67c4530.png)](https://gyazo.com/42cee93ded5cad3d572150b8a67c4530)

こんなかんじでちょこっと隙間をあけるためには

“`
.card-header.mb-2.mt-2
“`

こうやってそのブロック要素にクラスをつけてやるだけでいい
`mt` が上のマージン `mb` が下のマージン

いままで律儀にセレクターで指定していた自分を殴りたい

https:

元記事を表示

geochart 日本地図に色分けしながらマッピング

[![Image from Gyazo](https://i.gyazo.com/af18b42b21b09f01f1364033b3cecab8.png)](https://gyazo.com/af18b42b21b09f01f1364033b3cecab8)

こんなかんじで `DB` と連携して
特定の要素が多いほど日本地図に色濃くマッピングする機能をつくった。

また `gem` の `chartkick` だと世界地図しかフォローしてないので
今回はオリジナルの `js` で書く

## 開発環境
`ruby 2.6.5`
`Ruby on Rails 5.2.5`

## 前提
`DB` 内に住所のカラムを持つモデルがある
上記のモデルに `CRUD` 機能があり、その数を集計できるようにしたい

## 手順

① `geochart` を読み込むスクリプトを書く
② `DB` からの情報を加工するロジックを書く
③ `ruby` の変数を `js` にわたす
④ 地図を描画する

基本的に日本語の詳しい記事はないので
ドキュメントですすめる形になる

## 具体的なフ

元記事を表示

form_with を使いながら bootstrap のボタンの中に fontawesome と文字を入れる

[![Image from Gyazo](https://i.gyazo.com/91c3b22f02459928ba55dfe6d5bc6a3a.png)](https://gyazo.com/91c3b22f02459928ba55dfe6d5bc6a3a)

上の画像の右のボタンの中に

[![Image from Gyazo](https://i.gyazo.com/696fa7fc7db66720fdc32d8361bdfa61.png)](https://gyazo.com/696fa7fc7db66720fdc32d8361bdfa61)

こうやってアイコンを入れる試み

左のメッセージは `link_to` のタグを使っているので簡単にアイコンを入れられるんだけど
右のフォローするのボタンは `form_with` をつかっているのでどうしても入れられなかった

## 開発環境
`ruby 2.6.5`
`Ruby on Rails 5.2.5`

## 前提
fontawesome を導入している

ちなみに左のボタンのコードは以下

“`
= li

元記事を表示

OTHERカテゴリの最新記事