Ruby関連のことを調べてみた2021年10月19日

Ruby関連のことを調べてみた2021年10月19日

RubyもRailsもSQLも知らんC++erですがいきなり戦いを挑んでみた

## はじめに

これまでC++、JavaScirpt、C#、Rustなどなどいろいろな言語を触ってきましたが、Rubyはほとんど触る機会がありませんでした。
またデータベースも`SELECT`文というのがあるくらいの知識しか持っていませんでした。

ところでいろいろありお仕事で以下の新しい要素~~しかない~~に満ち溢れている領域への挑戦をすることになりました。

– Ruby
– Rails
– Active Record
– ActionView
– etc
– Rspec
– Factory Girl
– MySQL

無事にRailsチョットワカルになれたと思うのでそこで得た知見をまとめてみようかと思います。

## 環境構築

環境構築のはまりポイントもあったのですが職場の手順書が改善されてしまったので(いいことだけど)、書くモチベがないので割愛します。

## haml入門

“`haml
– content_for :main_pane do
= render ‘new’, :setting => @foo_setting
= r

元記事を表示

予約可能と予約不可で色分けをする

[1.はじめに](#1-はじめに)
[2.予約画面のイメージ](#2-予約画面のイメージ)
[3.実装](#3-実装)
[4.コード](#4-コード)
[5.おわりに](#5-おわりに)

#1. はじめに
予約可能と予約不可で処理を分けたいと考えましたが、思った通りに行かなかったのと、検索しても記事が少なかったのでまとめます。
前提として、sheetの座席はマスターデータとしてDBに保存してあります。
予約テーブル(Reservations)と、座席テーブル(Sheet)が関連づけられています
予約テーブルは座席テーブルにidをsheet_idとして保持します。

|Reservations| Sheet |
|:———–|————:|
| sheet_id | id |
|    ・ | row |
|    ・ |column |

#2. 予約画面のイメージ
予約できる場合はオレンジ、予約不可の場合は色を暗くして視覚的にわかりやすくしています。
今回は映画館がモデ

元記事を表示

railsでAjaxが上手く連動してくれない時の対処法の1つ

#railsとAjaxが上手く連動してくれない時の確認
現在railsでアプリケーションを作成していて非同期通信を導入しようとしていました。
ですが、何が原因なのか上手く動作する時としない時があり原因不明だったのですが、なんとか解決に導いてもらえたので整理しておくために記録します。

“`ruby:jsファイル
function post (){
const submit = document.getElementById(“submit”);
submit.addEventListener(“click”, () => {
const form = document.getElementById(“form”);
const formData = new FormData(form);
const XHR = new XMLHttpRequest();
XHR.open(“POST”, “/posts”, true);
XHR.responseType = “json”;
XHR.send(formData);
});
}

元記事を表示

コントローラーの単体テストコードの概念!

#①.結論!

コントローラーのテストは、あるアクションにリクエストを送ったとき、想定通りのレスポンスが生成されるかどうかを確かめる!

という事です!

記述の際は、「リクエストとレスポンス」に着目したテストコードを記述します!

この時に、RSpecの中でもRequest Specと呼ばれる手法を利用します!

#②.Request Spec

RSpecが提供している、コントローラーのテストコードを書くために特化した手法です!

RSpecの導入が完了していれば使用できます!

ちなみに、コントローラーのテストコードは、結合テストコードに記述する内容と、同じような責務を果たすことが多いです!

#③.まとめ

簡単にいうと、Request Specはコントローラーのテストコードを書くことに特化している手法であること!

という事ですね!

記述などは、、また改めて細かく書いて説明するようにします!

何か説明で間違っていたらご指導お願い致します(_ _)

元記事を表示

キーワード検索とタグ機能の両立

#前提
キーワード検索機能
GeekSalon教材7-1

タグ検索機能
https://qiita.com/MandoNarin/items/5a5610a40c66f77d6c10

以上を実装済み

#コード

“`posts_controller.rb
def index
@posts= Post.all
@tags = Tag.all
@posts = @posts.where(“body LIKE ? “,’%’ + params[:search] + ‘%’) if params[:search].present?
#もしタグ検索したら、post_idsにタグを持ったidをまとめてそのidで検索
if params[:tag_ids].present?
post_ids = []
params[:tag_ids].each do |key, value|
if value == “1”
Tag.find_by(name: key).posts.each do |p|
post_ids

元記事を表示

Migrationファイルを操作する

Ruby On RailsのMigrationファイルの操作についてまとめ。
すぐ忘れるので。

## Migration ファイルを追加
### モデル作成
“`ruby:ターミナル
# モデルを作成
rails g model User name:string introduction:string
“`
“`ruby:db/migrate/XXX_create_users.rb(XXXは作成日時)
class CreateUsers < ActiveRecord::Migration[6.1] def change create_table :users do |t| t.string :name t.string :introduction t.timestamps end end end ``` ```ruby:db/schema.rb ActiveRecord::Schema.define(version: 2021_07_15_224955) do create_table "users", forc

元記事を表示

Ruby on Railsで郵便番号から住所を自動入力する

## jp_prefectureとjpostalで住所自動入力を追加しました。
新規にデータを作成する際、住所を自動で入力できると楽だなと思い、使ってみました。
最初なので少しわたわたしたけど、思ったよりは簡単

## jQueryの導入
rails6は“jquery-rails“ではなく、yarnから導入する

“`ruby:ターミナル
yarn add jquery
“`
environment.jsに設定を追加

“`js:config/webpack/environment.js
const webpack = require(‘webpack’)
environment.plugins.prepend(‘Provide’,
new webpack.ProvidePlugin({
$: ‘jquery/src/jquery’,
jQuery: ‘jquery/src/jquery’
})
)
“`
jqueryをimportする

“`js:app/javascript/packs/application.js
import Rails f

元記事を表示

Mac上のRubyコードからクリップボードを操作する

Macで動くRubyスクリプトを書いていて、処理結果を直接クリップボードに格納したいケースがあった。(Rubyの処理結果をコピペしたかった)

macOSでは、`pbcopy`と呼ばれるクリップボード保存用システムコマンドが用意されていて、

“`shell-session
$ echo ‘piyo’ | pbcopy
“`

のように文字列をパイプでpbcopyに渡すことで、クリップボードに文字列を格納することができる。

一方Rubyスクリプトでは、バックスラッシュで囲まれたコードをシステムコマンドとして実行できる:

“`ruby
str = ‘piyopiyo’
`echo #{p str}`

=> “piyopiyo\n”
“`

これらをまとめると、Mac上のRubyコードからクリップボードを使うことができる:

“`ruby
str = ‘piyopiyo’
`echo #{p str} | pbcopy` # クリップボードにstrが入る
“`

元記事を表示

Progate Ruby on Rails5 IV ~ V 個人的ざっくりまとめ

# 投稿の編集

流れは、以下の通り。
①**編集したい投稿を取得**
②**その投稿のcontentの値を上書き**
③**データベースに保存**

“`terminal:ターミナル
$ rails console

> post = Post.find_by(id: 1) #①
> post.content = “Rails” #②
> post.save #③
“`

# フォームに初期値を設定

textareaタグで囲んだ部分を初期値として設定できる。

“`erb

“`

特定のアクションで、URLのidと同じidの投稿データをデータベースから取得し、そのcontentの値を初期値に設定したりできる。

“`rb:posts_controller.rb
def edit
@post = Post.find_by(id: params[:id])
end
“`
“`erb:posts/edit.html.erb