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

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

コメント投稿、削除機能のajax化

# コメント投稿、削除機能のajax化
## 手順
①commentsコントローラーの修正
②コメント作成、削除機能をajax化
③コメント作成、削除時の動的レンダリング処理を追加

## 1. commentsコントローラーの修正
コメント作成時の redirect_back を削除し、コメント削除処理を追加します。

“`app/controllers/comments_controller.rb
class CommentsController < ApplicationController def create @comment = current_user.comments.build(comment_params) @comment.save end def destroy @comment = current_user.comments.find(params[:id]) @comment.destroy! end ``` コメント削除のルートを追加します。 ```config/routes.rb Rails.app

元記事を表示

[rails 初心者]メソッド化についてまとめてみた

初めに

縁があり、通っているプログラミングスクールのメンター(質問対応者)さんから次のことを勧められました
`メソッド化に力を入れた方がいい`と。。。
ということで今回はそのメソッド化についての基本知識?考え方?を自分なりにまとめてみました!!

注意事項

※自分用でまとめてますので、分かり辛かったらすいません。
また理解不足・誤りがあったらコメントにてご指摘頂けますと幸いです。m(__)m<ヨロシクオネガイシマス

前提条件

①今回は`rails`を題材にして話を進めていきます。

②次の二つの知識についてある程度理解済みであること   ※私の場合は60%ぐらいでした・・・多分(;^ω^)
・「メソッド」について理解していること
・「オブジェクト指向」について理解していること
※もしここで不安な方がいましたら、以下のプルダウンのところを開いてリンク先を一読してみてください。

③`posts_conntroller`にて`@post = Post.find(

元記事を表示

Missing :controller key on routes definition, please check your routes. 即解決できた。(自分用)

dockerを使いrailsのdeviseを入れている時のエラー。

$ docker-compose exec web rails g devise User

Missing :controller key on routes definition, please check your routes.
とエラーメッセージ表示された。

routes.rb内では

Rails.application.routes.draw do
devise_for :users
root ‘pages/index’ ⇦ ⭕️ root ‘pages#index’ これで解決した。
get ‘pages/index’
get ‘pages/show’

# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html

# Defines the root path route (“/”)
# root “articles#index”

元記事を表示

モデルやコントローラーの命名規則

## はじめに
モデルのクラス名で誤った名前を気付かないうちにつけてしまい、エラー解消に時間がかかったので、同じミスはしないように記録に残す。

## モデル、コントローラーの命名規則
https://qiita.com/gakkie/items/3afcd505c786364aa5fa

これがシンプルにまとめられていた印象。

元記事を表示

【Rails】development以外の環境のコンソールに入ったときのConnection refusedエラー

## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16

## development以外の環境のコンソールに入りたいとき
“`
rails console -e production
“`

## コンソールに下記のエラーで入れなかったとき

“`
could not connect to server: Connection refused
“`
“`database.yml“`内のhost名を“`docker-compose.yml“`で定義されているDB用コンテナ名と一致させる。

“`docker-compose.yml
environment:
DB_HOST: postgres
DB_NAME: hoge_development
DB_NAME_TEST: hoge_test
DB_USERNAME: postgres
DB_PASSWORD: password
REDIS_HOST: redis
“`

“`config/database.yml
production:
<<: *de

元記事を表示

個人的 Rails × Vue まとめ

## 概要

RailsをAPIサーバにしてVueのクライアントアプリと疎通する構成ではなく、`rails webpacker:install:vue`でRailsにWebpackを通してVueを入れたプロジェクトで出てくるあれこれについてまとめます。

私自身、Vue初心者でありフロントエンドスキルがないため手探りで調べて知ったことについてまとめるので、間違っている点はコメントいただけると嬉しいです。

### 注意事項

本記事で解説している内容を参考に各々で試される際は、必ず自己責任でお願いいたします。

論文のように正確に調査して資料をもとにまとめているわけではなく、私が試してわかったことをまとめているだけに過ぎません。

## Vue2とVue3のインストール方法について

とある記事で`rails webpacker:install:vue`だとVue2がインストールされるため、以下の手順でVue3がインストールできると解説されていました。

“`bash
$ yarn add vue@next vue-loader@next @vue/compiler-sfc
“`

元記事を表示

sidekiq に特定のファイルを生成する処理とそのファイルを ActiveStorage でアップロードする処理のフローをまとめる

## 概要

例えば何らかの一覧画面上のデータを全てExportする機能を作った際に sidekiq でその重たい処理を実行させたい場面があるかと。
sidekiq のタスクが終わってファイルが生成できた後、ユーザーがそのファイルをダウンロードできるようにするためには ActiveStorage でファイル管理すると楽ですよね。

今回は、次の処理フローをまとめていきたいと思います。

1. 何らかの一覧画面上のデータを全てExportするボタンをクリックしてダウンロード画面へ遷移(UIスレッド)
1. sidekiqにその一覧データをCSVなどにファイル生成する処理をタスク化(UIスレッド・非同期)
1. ↑この間、ダウンロード画面上はダウンロード中のインゲージUIを表示させて裏ではAjaxでファイルが生成されたのか常に確認している(UIスレッド)
1. ファイルが生成できたらActiveStorageでlocal設定は特定のパスにファイルを移動、aws設定ならS3にファイルをアップロードする(非同期)
1. ファイルができたことを確認したらダウンロード中のインゲージUIを止めてファ

元記事を表示

【個人開発】地味に便利!? リモートワーカー向けスケジュール共有サービスを開発しました【LINE×Googleカレンダー】

こんにちは。エンジニア転職活動中のYoshinoと申します。プログラミングスクールの「RUNTEQ」でRuby on Railsを中心に学習しています!

この記事では、私が作成した **[リモートワーカー向けスケジュール共有サービス「トリコミ」](https://torikomi.herokuapp.com/)** と、その使用技術について紹介させてください。

[![ogp.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730434/adfcdaf2-03d1-9222-5f7c-3040e23bf76e.jpeg)](https://torikomi.herokuapp.com/)

# 開発の背景

## 家庭のスケジュール共有、どうしてますか?

突然ですが、みなさんは家庭のスケジュールの共有、どうしてますか?

私は夫との2人暮らしで、**私は在宅、夫は通勤**というスタイル。

平日夜にたびたびスクール主催のオンライン勉強会に参加しているのですが、帰宅してきた夫に邪魔されたくないので、

元記事を表示

【rails + minitest】 flashに格納したメッセージをassertする方法

## 概要
minitestでrailsのテストを書いていてふと、
「flashの内容でコードの挙動を確認出来れば、testコードの可読性があがりスマートなのでは??」と思ったので、書き方をメモします。

## 結論
以下のように記載すればOK。

assert flash.to_hash.value? “想定されるメッセージ”

## 詳細
Flashクラスはよくわからないので、`to_hash`でハッシュに変換したのち、`value?`メソッドで格納されたメッセージを検索してます。

これを使えば、以下のように、テストコードの可読性がグンッと上がって幸せ

“`ruby:sample-test
test “records-destroy” do
# 正常系
sign_in(@user2)
delete record_path(1)
assert flash.to_hash.value? “レコードを破棄しました”
# ↑ 一目瞭然
assert_redirected_to records_path

# 異常系
delete record_pa

元記事を表示

Rubyのオブジェクト・メソッド・インスタンス・変数についてまとめてみた

## オブジェクトについて

### オブジェクトとは
Rubyにおいてはクラスから生成されたもののこと。

### クラスについて
Hogeクラス、のようなクラスを定義したとする。RubyではこのクラスもClassクラスに所属しているオブジェクトである、というのが大きなスタート。
これはどういうことかと言うと、HogeクラスというものがあったとするとこのHogeクラスも実際は`Class.new`して作られている、オブジェクトである、ということ。
下記の意味は`Hoge=Class.new`と同意義である。
“`ruby
class Hoge
end
“`

### インスタンスオブジェクト(インスタンス)
クラスから生成されるのがインスタンスオブジェクト(インスタンス)。
`クラス名.new`で生成することができる。
RailsにおけるモデルはClassクラスからインスタンスを生成し、定数を与えていると言える。
コントローラーも同様。

### レシーバーとは
~~メソッドの戻り値を受ける対象~~
~~下記の場合、Personがレシーバー。オブジェクトの世界ではオブジェクトにメ

元記事を表示

【個人開発】純喫茶を気軽に探せる情報サイトを作りました

![スクリーンショット 2022-10-16 9.23.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2899752/1810558a-2a57-e799-e0b1-bba86c1925ee.png)

**近くの純喫茶を気軽に探せて、こだわりの条件でお店を絞り込み検索できる「純喫茶Trip」を開発しました**

**URL: https://junkissa-trip.link/**
**Github: https://github.com/harpseal-chan/JunkissaTrip**

# :information_desk_person:はじめに

はじめまして。HarpSeal([@azarashi_0424](https://twitter.com/azarashi_0424))と申します。

わたしは純喫茶巡りが趣味で、普段はGoogle Mapやグルメサイト、ウェブマガジンの特集を見ながら行きたいお店を探しています。

しかし、グルメサイトやGoogle Mapではチェー

元記事を表示

MYSYS2のインストールできないとき

# MYSYS2のインストールで困った話
rubyの環境構築中にMYSYS2をインストールしようとした際に以下のエラーが発生しました

“`
ridk install
“`
↑によって以下が起動します
“`
_____ _ _____ _ _ _ ___
| __ \ | | |_ _| | | | | | |__ \
| |__) | _| |__ _ _ | | _ __ ___| |_ __ _| | | ___ _ __ ) |
| _ / | | | ‘_ \| | | | | | | ‘_ \/ __| __/ _` | | |/ _ \ ‘__/ /
| | \ \ |_| | |_) | |_| |_| |_| | | \__ \ || (_| | | | __/ | / /_
|_| \_\__,_|_.__/ \__, |_____|_| |_|___/\__\__,_|_|_|\___

元記事を表示

ActiveRecordのトランザクションを理解する

Railsのトランザクションについて理解が曖昧だったため調べてみました。トランザクションって何?という方から、トランザクションについて知ってるつもりな方まで読んでいただけると幸いです。

## この記事の目的
– トランザクションを理解する
– Ruby on RailsのActive Recordでのトランザクションの使い方を理解する

## トランザクションとは?
トランザクションとは、複数のSQL文によるデータの更新を「1つの処理」とし、全てのSQLの実行が成功した時にデータベースに更新分を反映させることです。データベースの整合性を保つ目的があります。

基本的に、複数のSQLを同時に実行する際はトランザクションを使う必要があります。

### トランザクションの使用例
代表的なトランザクションの使用例は、銀行での取引です。

カエル?さんがクマ?さんに2万円送金するとします。?さんは日本におり、?さんはロンドンにいます。その際のデータベースの処理は下記のようになります。

1. ?さんの銀行口座に2万円の残高があるか確認する
1. ?さんの銀行口座から2万円を引き落とす
1.

元記事を表示

一覧ページの読み込みが重たい問題について

初めに

ポートフォリオテーマとして業者のレビューサイトを作成しています。
以下の画像のようなレビューサイトを作っていこうと思います。

![top画面1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822721/75cffe6d-1714-fc3c-9ad8-068addf06205.png)

※自分用でまとめてますので、分かり辛かったらすいません。
また理解不足・誤りがあったらコメント頂けますと幸いです。m(__)m<ヨロシクオネガイシマス ### 発生している問題・エラー ・先程の画像のように、`一覧ページ(画像を扱っているページ限定)`を開こうとしたとき読み込みが重たくなる現象が発生  ※問題なく表示されるパターンもあれば、タイムアウトや以下のエラーが発生する時もありました。 イメージ画像 ![activerecode-errore.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2

元記事を表示

フォームに名前を入力するとPDF化された印鑑を出力するアプリを作ろう②(PrawnによるPDFファイルのカスタム)

# 初めに
この記事は`フォームに名前を入力するとPDF化された印鑑を出力するアプリを作ろう`の後半です。
[フォームに名前を入力するとPDF化された印鑑を出力するアプリを作ろう①(Ruby on RailsでPDFファイルを作成)](https://qiita.com/eityamo/items/ff327fec918d882e25f6)

前回まででPDFファイルを出力するところまで実装できました。今回はPrawnのGemによる基本的なカスタム方法について説明していきます。

# PrawnによるPDFのカスタム
Prawnの基本機能は`Text`、`Graphics`、`Bounding Box`の3つです。
それぞれについて説明しながら印鑑を実装していきます。

実装する準備としてPDFに座標を表示します。

“`ruby:stamp_pdf.rb
class StampPdf < Prawn::Document def initialize(user) super(page_size: 'A4') # 座標を表示 stroke_axis

元記事を表示

chart.jsが表示されない現象について

# エラー内容について

ポートフォリオを制作するにあたって、データを視覚的に見れるようにするためにChart.jsを使用しました。
実装し確認をしていると、グラフが表示されない時があり、更新した場合表示されるという現象が起きました。
その時の失敗の理由について書いていきたいと思います。

(フレームワークはRuby on Railsを使用しました。)

# 解説
### 問題のあったコードについて
様々なページでグラフを表示させたいため、部分テンプレートでChart.jsを利用したグラフの実装を行いました。
“`js:_line_graph.html.erb