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

Rails関連のことを調べてみた2021年08月20日
目次

【エラー解決】Terminalをよく確認することを学んだときの話

#結論

* ストロングパラメーターに新しく追加したカラムを設定してなかった

#このエラーから学んだこと

* エラーが出なかった場合はTerminalをよく確認すること

#解決前の状況

###前提

読んだ本の感想を投稿するアプリを作成していました。

星レビューを実装中にレビュー付きの投稿はできたものの、
Viewに反映されず、アクションで保存がされていなかったのか、
それともView側の原因で反映されていないだけなのかわかりませんでした。

### 発生していた問題

エラーメッセージはなかったが、
Terminalをよく確認したら、下記のような文字を発見

“`
Started POST “/books” for 114.162.142.130 at 2021-07-30 02:58:47 +0000
Cannot render console from 114.162.142.130! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by BooksControlle

元記事を表示

[Rails]もっと見るボタンの実装(JavaScriptのみ、jQueryなし)

### 完成イメージ

![スクリーンショット 2021-08-20 10.48.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912656/43b5fd13-e5f8-81bd-056d-d5da8682701e.png)

合計のレコード数が9件だった場合、

最初は、6件だけ表示。
これを押すと、残りの3件が表示されるという仕組みを作る。

### 前提
マークアップコードはHamlで実装。

// Haml側でのデータの扱い
– @sections = 複数のセクション
– section: アプリケーション内で表示する後述の「contents」を格納するセクション
– contents: 「section」と1対多の関連がある、アプリケーション内で表示する複数のレコード

### JS側

“`haml
:javascript
// もっと見る表示
function SeeMore(contentsId, minimumContentsId, button) {
c

元記事を表示

railsチュートリアル第3章 root_url

###ルーティングの設定
アプリケーションルートのルーティングを設定
rootでホーム画面に指定できるらしい。

“`rb
Rails.application.routes.draw do
root ‘static_pages#home’
# 何の意味がわからん
# ホーム画面がhomeページなるらしい
get ‘static_pages/home’
# static_pagesコントローラからhomeアクションに紐付けされる
# getでアクセルすることでページを取得することができる
get ‘static_pages/help’
# 何を書いているかはわからない
get ‘static_pages/about’
# aboutアクションにGETリクエストを送る
get ‘static_pages/contact’
# rootは流れだったような気がする
# applicationコントローラのhelloアクションを起こす
end
“`
“`
ubuntu:~/environment/sample_app (static-pa

元記事を表示

ActiveStorageを利用した際のseedデータ作成

初投稿です!宜しくお願いします。

#### やりたいこと
ActiveStorageを使って投稿機能を実装している状態でseedデータを準備したい。
ファイルの添付を必須にするバリデーションをかけている場合のデータを作成したい。

#### seedデータの用意

以下のやり方場合は、
ActiveRecord::RecordInvalid: バリデーションに失敗しました: 写真を追加してください
となってしまった。

失敗例

“`db/seeds.rb
10.times do |n|
post = Post.create!(
user_id: “1”,
content: “投稿します!”,
)
post.images.attach(
io: File.open(Rails.root.join(“./app/assets/images/post/test.jpeg”)),
filename: “test.jpeg”
)
end
“`

成功例

“`db/seeds.rb
10.times do |n|
post = Pos

元記事を表示

[Ruby on rails]バッチ処理で通知の定時削除 通知の未読連絡のメール作成

初めに

今回バッチ処理を実装しました。
以下はイメージ画像です。
何日で通知を削除するのがベストなのか定まってなくてすみません・・・。

![スクリーンショット 2021-08-19 17.50.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/f34553ab-506a-be18-37b8-df492837a416.png)

![スクリーンショット 2021-08-19 17.47.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/00bf8879-33ab-d342-2dfc-cc938003e5ec.png)

バッチ処理って何?

一定期間経ったらデータを消してくれる機能だと思ってたのですが、
もっと色々なことができるんですね:point_up:
1日1回何時とか、2分起き〜とかに、あらかじめ定めた処理を行ってくれます。
今回行ったのは、1日

元記事を表示

【Docker×Rails6】CSSを反映させる

Rails6ではJavaScriptのモジュールバンドラとしてWebpackが導入されていますが、
画像やCSSに関しては従来のSprocketがアセットパイプラインとして使用され、
JavaScriptのみをWebpackでコンパイルするようになっています。
そのため画像やCSSを反映させる場合は、変更作業が必要になります。

# 設定手順

## application.html.erb

の内容を書き換えます。

“`ruby:app/views/layouts/application.html.erb

<%= full_title(yield(:title)) %>
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
# (下の行を追記)webpackがCSSを扱えるようにする
<%=

元記事を表示

【Docker×Rails6】solidusを使ってECサイトを構築する(開発編)

この記事は、下記記事の続きになります。

https://qiita.com/asami___t/items/44a77464b57503ea78db

# gemをインストールする。

“`ruby:Gemfile
# frozen_string_literal: true
source “https://rubygems.org”
# gem “rails”
gem ‘solidus’
gem ‘solidus_auth_devise’
“`

‘solidus’をrequireすると、以下がまとめてインストールされます。個別にインストールすることも可能なよう。
solidus_core
solidus_api
solidus_frontend
solidus_backend
solidus_sample

# docker-compose buildの実行

“`ruby:ターミナル
$ docker-compose build
“`

docker環境の場合、通常は上記コマンドでbundle installができるはずなんですが、何故かできなかったため、下記実行。

`

元記事を表示

GETアクションをおこなった際の、エラーについて(エラー:リダイレクトが繰り返し行われました。

# リンク先にて、以下の『このページは動作していません』とのエラーが出たので共有します。
![スクリーンショット 2021-08-19 14.26.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1730386/0b950fe7-1d27-5291-8c81-dfc613ebad80.png)

## はじめに
Railsにて、GETアクション呼び出すリンクを開いたところ、『ロード後リダイレクトが繰り返し行われました』とのエラーが出ました。

## 原因
ルーティングでGETと指定して、コントローラーのGETアクションを行なっていたのにも関わらず、アクションの中でも、redirect_to を記述しており、リダイレクト処理が2回も行われていたためでした。

![スクリーンショット 2021-08-19 14.43.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1730386/689f7800-d5d0-67c9

元記事を表示

psych が原因で bundle install がこける

なぜか半年に一回くらい死ぬ。毎回すぐ直るのだが。

## 直し方

“`
gem install psych
bundle install
“`

## エラーログ

“`
$ bundle install

/Users/me/.rbenv/gems/2.7.0/gems/psych-4.0.1/lib/psych/versions.rb:5: warning: already initialized constant Psych::VERSION
/Users/me/.rbenv/versions/2.7.2/lib/ruby/2.7.0/psych/versions.

元記事を表示

ブラウザでルーティングの確認

ブラウザでルーティングを確認する方法!

`rails/info/routes`をURLの後ろにつければOK

ターミナルで
`$ rails routes`するよりも見やすい!

元記事を表示

【Docker×Rails6】solidusを使ってECサイトを構築する(環境構築編)

備忘録として開発の流れを残しておきます。

# バージョン情報

Ruby 2.7.1
Rails 6.1.4
MySQL 5.7
Nginx 1.19.10

# 前提
AWSにアカウント作成済
docker hubにアカウント作成済
docker インストール済

# ファイル構成

現状のアプリのフォルダ構成に、下記のファイルを追加します。

“`
~/project/solidus
├── Dockerfile
├── Gemfile
├── Gemfile.lock
├── containers ── nginx
├ ├── Dockerfile
├ └── nginx.conf
├── docker-compose.yml
└── environments ── db.env
“`

# フォルダ作成

“`ruby:
$ mkdir -p ~/project/solidus
$ cd ~/project/solidus
$ mkdir -p containers/nginx
$ mkdir enviro

元記事を表示

【エラー解決】The engine “node” is incompatible with this module

【Rails6+Docker】で環境構築をし、ECサイトを作ろうとしています。

Railsがバージョン6以降のため下記コマンドでwebpackerをインストールしようとした際、エラーが発生したため、解決策を備忘録に残しておきます。

“`ruby:ターミナル
$ docker-compose run –rm app rails webpacker:install
“`

“`ruby:エラー文
error http-proxy-middleware@2.0.1: The engine “node” is incompatible with this module. Expected version “>=12.0.0”. Got “10.24.1”
error Found incompatible module.
“`

# Node.js バージョン確認

①Dockerコンテナ上で動いている Node.js のバージョンを確認

“`ruby:ターミナル
$ docker-compose run –rm app node -v
v10.24.1
“`

②ロー

元記事を表示

初めてのRSpec① 超初心者が参照した記事まとめ モデルテスト編

初めに

今回、初めてテストを書きましたが、そもそも書くまでの道のりが長く、、
ややこしかったので参考にしたサイトをまとめてみました。

ひとまず基本を理解する

テストコードちらっとみたことあるけど、
書いたことは全くなかったので以下の記事を読みました。

https://note.com/devtetsu/n/nd29c50468480

https://qiita.com/jnchito/items/2a5d3e15761fd413657a

必要なGem、ファイル、FactoryBot準備

https://qiita.com/nakachan1994/items/29369470d50d0fcd0f6c

個人的メモ
以下、下の3つ入れます。
“`gem “factory_bot_rails”“`はテスト用のサンプルデータを
簡単に作成することができるGemです。
“`gem ‘faker’“`はダミーデータを作成してくれます。

“`perl

元記事を表示

【Ruby on Rails】他テーブルのカラムも検索して表示する方法

#対象者

* 他のモデルのカラムまで検索をする方法を考えている方

#目的

* 他モデルのカラムを検索してViewに表示する

#実際の手順と実例
###1.前提

下記を元に実装しています

https://qiita.com/nao0725/items/1dbe59c63419179d1818

* ここでは記事のタグ名を検索します。
* Article、Tag、ArticleTagの3つのモデルを使用
* ArticleTagを中間テーブルとして実装しています。
* tag_nameカラムをTagテーブルで確認します。

###2.joinsメソッドを使用

**joins**メソッドとはテーブル同士を内部結合して検索するためのメソッドです。

これを元に検索メソッドを使用すると

“`article.rb
def self.search(search_word)
Article.joins(:tags)#①
.where([“title LIKE(?) OR body LIKE(?) OR sub_title LIKE(?) OR tag_n

元記事を表示

rails tutorial 6章まとめ。バリデーション、正規表現、has secure password

# **バリデーション**

・存在性 presence: true

・一意性(唯一無二のユーザーにする為のもの) uniqueness: true 

・長さ length (何文字以下はNGとかの為)

# 正規表現(Regular Expression)

regexとも言う。

メルアドの正規表現を設定した。

“`ruby
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/**i** 
“`

**# iの部分は大文字小文字を無視するオプション。**

DBには全部小文字変換して取り込むから、大小区別する必要ない。

これは、無効なアドレスを拒否する為のもの。

(@を入れてないのはNGとか)

# データベースにインデックスを挿入

これをやると、効率化を図れる+データベースの一意性を担保できる。

# has secure password

を使うと

➀passwordをハッシュ化(暗号化)できる。

(password_digestカラムがないと使えない。)

②**authenticateメソッド

元記事を表示

30代実務未経験がRailsでオリジナルポートフォリオを作成

# はじめに
こんにちは、Nonaと申します。
31歳でWebエンジニアになることを目標に2021年5月からスクールにてRailsを中心に学習中です。これまで学んできたことをいかして今回Railsにてオリジナルアプリを作成したのでアプリについて説明させていただきます。

##アプリについて
###No Dog,No Life!(犬の同伴がOKな場所の情報共有サイト)
いつでもどこでもワンちゃんと一緒にお出かけをしたい!そんな方のためにワンちゃん連れ OK の穴場の PLACE(公園、お店、施設)情報を共有し合うサイトです。
URL : https://nodognolife.xyz/
GitHub : https://github.com/Naru-hub/PF_NoDogNoLife

![nodognolife1b.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1397453/05edfd6c-a8b9-fc3b-4497-9c3202e484cb.gif)

##なぜこのアプリを作ったのか?

元記事を表示

Rails Bootstrapの環境設定の仕方

##Bootstrapの環境設定の仕方
###1:Gemfileにコードを追加
“`Gemfile
gem ‘bootstrap’, ‘~> 4.1.1’
gem ‘jquery-rails <=Rails6では追加の必要がない gem 'bootstrap-sass' ``` ```ターミナル $ bundle install ``` ###2:application.html.erbにコードを追加 ```views/layouts/application.html.erb

?

header1

header2

header3

?

RailsでECサイトのカート機能を実装する(改訂版)

## はじめに
[RailsでECサイトのカート機能を実装する](https://qiita.com/akmhmgc/items/a40b91aa4f469c397f85)
での
- URI設計
- コントローラーに寄りすぎたロジック
の二点を改善しました。

## ER図
Userモデルは除いています。
![ec.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1053396/483ee996-0db3-f64f-90ee-66c13d68ba40.png)

## Cart、Item、Productテーブルのmigrationファイルの作成
```
$ rails g model Cart
$ rails g model Product name:string price:integer
$ rails g model Item cart:references product:references quantity:integer
$ rails db:migarate
```

## ルーティング

元記事を表示

OTHERカテゴリの最新記事