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

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

cannot load such file — sasscエラーについて

本日も頑張っていきましょう。宜しくお願いします。

こんなエラーが出ました。
![スクリーンショット 2022-05-14 11.35.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2607524/919f091c-899c-dc75-4afe-b8192e41f5bc.png)

どうやらこれはRails7以降で起きるエラーのようです。
従来通りにCSSを呼び出すとこのエラーが発生するようです。

以下対応をすると解決できるようなので試してみます。

“`gemfile.qiita.rb
# gem “sassc-rails”
“`

この、コメントアウト(#)を削除して、ターミナル上で
「bundle install」を実行してみます。

無事、エラーが解消されました!

元記事を表示

accepts_nested_attributes_for を使ったフォームで意図しないユニークバリデーションの発生を回避する方法

## 解決したい問題
Railsでは `accepts_nested_attributes_for` を使って、`has_many`関連する子レコードを1つのフォームで更新することができます。
イメージとしてはこんな感じです。

![sample.002.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7465/fbd1d0e0-3c36-dcaf-715c-a787fbce39b4.jpeg)

上の画面では以下のようなBookモデルと、それに関連するAuthorモデルを更新するフォームです。
(本と著者はmany-to-many関連だろう、というツッコミが来そうですが、説明のために単純化してるので気にしないでください)

“`ruby
class Book < ApplicationRecord has_many :authors, dependent: :destroy accepts_nested_attributes_for :authors, reject_if: :all_bl

元記事を表示

開発勉強(controller)

今回も頑張っていきましょう。

今日は、前回なんとかサーバーの立ち上げまでできたので、実際に開発に向けて勉強していきます。

⭐️ MVC
  ・Railsは「MVC」というアーキテクチャーを使ったフレームワーク
  ・MVCというのは、「Model」「View」「Controller」の略
  ・この3つの中で最も重要なのは「Controller」
  
⭐️ コントローラーを作成する
  ターミナル上で前回作成したRailsAppへ移動し、以下コマンドを実行する
“`ruby:qiita.rb
rails g controller 名前
“`
  ※名前は半角英字とすること
“`ruby:qiita.rb
create app/controllers/hello_controller.rb
invoke erb
create app/views/hello
invoke test_unit
create test/controllers/hello_controller_test.rb

元記事を表示

herokuでsecret_keyを使う

## はじめに
アプリをherokuにデプロイし、ログイン機能を使用しようとしたところ、このようなエラーが出ました

JWT::DecodeError (No verification key available)

この解決方法を共有いたします。

## 結論
herokuにマスターキーを登録するのを忘れてたので、追加しました。

heroku config:set RAILS_MASTER_KEY=`cat config/master.key`

### 発生状況
ログイン認証でJWTを使って、デコードする際に、`Rails.application.credentials.secret_key_base`を使っています。
この値がnilとなっており、エラーが発生しておりました。

def decode(token)
JWT.decode token, Rails.application.credentials.secret_key_base
end

そもそもこれは、credentials.yml(公開鍵)の値をmaster.key(秘密

元記事を表示

【M1Mac】【Docker】環境構築で nokogiri のエラー対処方法

## はじめに
未経験からエンジニアに転職しました。
まだまだわからないことだらけですが、毎日楽しく働いています!
業務や個人開発での発見やエラー解決などをアウトプットしています。
今回は、
M1 Macの環境構築で遭遇したエラーの解決方法です。
Docker Rails 環境を想定しています。

# エラー内容
~~~
Caused by:
LoadError: Error loading shared library ld-linux-aarch64.so.1: No such file or directory (needed by /usr/local/bundle/gems/nokogiri-1.13.3-aarch64-linux/lib/nokogiri/2.6/nokogiri.so) – /usr/local/bundle/gems/nokogiri-1.13.3-aarch64-linux/lib/nokogiri/2.6/nokogiri.so
~~~

~~~
rake aborted!
LoadError: cannot load such file —

元記事を表示

【完全攻略】Ruby on Rails ***NO FILE*** が出てマイグレーションできない時の対処法

# はじめに
筆者は [大学生限定 プログラミングコミュニティ 『GeekSalon』](https://geek-salon.com/?utm_source=Direct&utm_medium=attract&utm_campaign=2Q&utm_content=Fukuoka_E_2Q)で活動している者です!

# エラー
さぁ実装したものを確認してみよう!とrails sをしたところこのような画面が、、、
![iOS の画像 (26).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1081227/ea14ac0d-67e3-3602-1d8e-7fe9e623f6d2.jpeg)
しめしめ、これはマイグレーションができていないがゆえのエラーだなと思い以下を実行!
“`console:
$ rails db:migrate
“`
しかし、このコマンドがうまく実行できず、、、
マイグレーションファイルの状態を確認するために、以下を実行
“`console:
$ rails db:migr

元記事を表示

コンテナ用語についてまとめてみた

# コンテナ用語

## コンテナ

– OSとカーネルは共有し、プロセスを分離する仕組み。
– コンテナ上で実行されたソフトウェアは単に1つのプロセスとして稼働しているにも関わらず、コンテナ内のソフトウェアから見ると独立したOS環境を占有しているように見える。

### コンテナ vs サーバー仮想化

– サーバー仮想化は複数のOSを同一のハードウェア上で実行する仕組み。
– 「仮想マシン」上に「ゲストOS」を動作させる。
– 例: Virtual box

[サーバー仮想化技術の基礎 – Qiita](https://qiita.com/NagaokaKenichi/items/123c54f3863816481bd7)
[各仮想化技術の違いをざっと理解するッ!! – Qiita](https://qiita.com/hiroki-it/items/0cea21a83394634d284a)
[[Cloud] 仮想化技術について](https://qiita.com/okkn/items/c0cb6feef4058e9d16b4)

### コンテナのメリット

元記事を表示

【超簡単】Ruby on Rails に BootStrapを導入する方法

# はじめに
筆者は [大学生限定 プログラミングコミュニティ 『GeekSalon』](https://geek-salon.com/?utm_source=Direct&utm_medium=attract&utm_campaign=2Q&utm_content=Fukuoka_E_2Q)で活動している者です!

# Bootstrapとは
世界で一番人気のあるフロントエンドライブラリです。
モバイルファーストなレスポンシブウェブを素早くデザイン・カスタマイズすることが可能です。
豊富なコンポーネント、強力なJavaScriptプラグインを備えています。
詳しくは、[Bootstrap公式サイト](https://getbootstrap.jp/) を!!
## Ruby on Rails への導入方法
①まずは[Bootstrap公式サイト](https://getbootstrap.jp/)へアクセス!
②サイト内のはじめるボタンをクリック!
![スクリーンショット 2022-05-13 23.36.54.png](https://qiita-image-store.s3

元記事を表示

content_forメソッドでタイトルを動的に出力する

タイトルを動的に出力したいのでyieldメソッドとcontent_forメソッドをうまく利用する。
content_forメソッドを使うことでヘルパーメソッドが利用できるので、動的にタイトルを出力することができる。

まずは簡単にyieldメソッドとcontent_forメソッドの使い方を説明していく。

### content_for
content_forは表示したいコンテンツを設定するのが役割。
content_forの公式
“`erb
<%= content_for :コンテンツ名 do %>
コンテンツ
<% end %>
“`
具体例を用いて説明していく。
“`erb
<%= content_for :title do %>
トップページ
<% end %>
“`
コンテンツ名を:titleとした。そしてコンテンツはトップページとする。
content_forでは表示したいコンテンツをdo~endで囲む。
ここでいうコンテンツはページのタイトルとして表示したい文字列を設定。

### yield

yieldの公式

“`
yield(:コンテン

元記事を表示

Rspecにおける画像検証の方法

画像がちゃんと表示されているか検証するテストを書いている時にやり方がわからずハマってしまったので登録のやり方から検証方法までを書いていく。

## letで画像を登録する

テストで使用するディレクトリに画像ファイルを置き(例では/spec/factoriesに”image_1.jpg”という画像ファイルを置いている)File.new(“#{Rails.root}/画像のパス)でデータを登録する

“`ruby
let!(:user) { create(:user, name: ‘user_1’, image: File.new(“#{Rails.root}/spec/factories/image_1.jpg”)) }
“`

## フォームに画像を入力する

“attach_file”を使い画像登録の状況を再現する。name属性、ファイルのパス(上の例と同じディレクトリにあるファイルを指定している)を指定することで画像の投稿を再現することができる

“`ruby
attach_file ‘フォームのname属性’, “#{Rails.root}/spec/factories

元記事を表示

Rspecを書くときに注意していること

Rspecを書くときの自分なりの決まり事、というかこうした方が読みやすくなるんではなかろうかということをメモがわりに書いてく。これからもちょいちょい足していく & これ違うなと思う部分は修正していく。

## 戻り値を明確にする

“`ruby
let!(:hoge) do
huga = create(:hoge, name: ‘name’, user: user)
hoge.update(updated_at: Date.new(2018, 7, 1))
hoge # 戻り値
end
“`

最後のhogeがなく、hoge.updateで終わってしまうと戻り値が何なのかが判断しづらいので「hoge」を最後に記述し戻り値を明確にする

## 凡庸的なクラス属性を指定するときは「within(’.someClass’) do」を使い対象を絞る

“`ruby
page.all(‘.btn’)[1].click
# 対象が広すぎるのでページに新いbtnクラスが追加されたときにテストが通らなくなる恐れがある

within(page.all(‘.shops’)[1]) {

元記事を表示

rails5 progate 整理メモ

# ログイン失敗時のメッセージを表示させる
送信されたパラメータにあうユーザーがない場合にメッセージを表示させる。
その時にお題のメッセージを表示させる
## どうやってエラーメッセージを表示させるのか忘れた。
ちょっと答えを見た。
“`users_controller.rb
def login
.
.
.
else
@error_messeage = “メールアドレスまたはパスワードが間違っています”
render(“login”)
end
end
“`
loginページに行く前にインスタンス変数に代入しておく。そうすることで中身を入れることができる。
“`rb
<% if @error_messeage %>
“`
@error_messeageに中身があれば表示されるようにする。

“`login.html
<% if @error_messeage%>

OTHERカテゴリの最新記事