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

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

[Ruby編]等差数列

#[Ruby編]等差数列を解いてみる
#問題
以下のような数列を出力するプログラムを作りましょう。

5 8 11 14 17 20 23 26 29 32

最初の数字が5で、3ずつ増加していく事がわかります。
一般的にこれを初項5、公差3の等差数列といいます。

このような数列を出力するプログラムを作りましょう。
初項 m が与えられ、公差 n が与えられるので 10番目までの数字をスペース区切りで出力するプログラムを作成してください。
#入力される値
入力は以下のような初項 m、公差 nが半角スペース区切りのフォーマットで与えられます。

入力値最終行の末尾に改行が1つ入ります。

m n

#期待する出力
初項 m ,公差 n の等差数列を1〜10番目までスペース区切りで出力して下さい。
#入力例1
3 3
#出力例1
3 6 9 12 15 18 21 24 27 30
#入力例2
5 10
#出力例2
5 15 25 35 45 55 65 75 85 95
#入力例3
1 3
#出力例3
1 4 7 10 13 16 19 22 25 28
#私の答え
“`java:

元記事を表示

downcase,sliceメソッドの応用

「a=abc」,「b=HiAbc」という二つの変数がある時、a,bいずれかの文字列がもう片方の文字列の最後にある場合にTrueを返すプログラムの作成方法です。
今回の場合、aのabcがbの後ろ三文字に存在するためTrueとなります。

以下二つのメソッドを使用することで作成することができます。

## メソッドの使用例
– 大文字を小文字に変換するためにはdowncaseメソッド

“`java:ruby
a = “AbC”
a_down = a.downcase
// これにより a_down には abc が入る
“`

– 特定の位置にある文字列などを切り抜きたい場合はsliceメソッド

“`java:ruby
a = “AbC”
a_slice = a.slice(1)
// これにより a_slice には b が入る
“`

## 回答例

“`java:ruby
def compare(a, b)
a_down = a.downcase
b_down = b.downcase
a_len = a_down.length
b_len = b_do

元記事を表示

[Rails]redirect_toとrenderの違いについて[初心者]

#はじめに
いきなりですが、“redirect_to“と“render“って、初めて見たときは、両者の違いがよく分からなかったですよね。
深掘りして、一緒に学んでいきましょう!

#redirect_toとrenderの違い
redirect_to: HTTPリクエストをサーバーに送り、ユーザーはそこから返ってくるHTMLが表示される。
render: アクションの中で、呼び出すViewファイルを指定するメソッド。

言葉だけだと、分かりづらい部分があると思うので、それぞれの**処理の流れ**について解説します。

#それぞれの処理の流れについて

“`ruby:redirect_toの処理の流れ
①controllerの処理でredirect_toを実行
②redirect_toの引数で指定したURLにHTTPリクエスト(GET!!)を実行
③HTTPリクエスト(GET!!)されたURLに対応するルーティング処理を実行
④ルーティング処理に対応したcontroller、アクションが呼び出され処理を実行
⑤処理に応じたviewのレンダリングを実行
“`

①controll

元記事を表示

Rails6 チェックボックスにチェックが付いている値を配列にしたい

**フォームのチェックボックスにチェックが付いている値を取得して配列にする。**

“`ruby
ActionController::Parameters {“authenticity_token”=>”DoVsq/+dLxgEzm0kXJUo4SWmHx5CBR1GmeV+yNaAeYcDmyMg8nWcMDNSWeMY**************==”, “hogehoge”=>“0”, “bbb”=>”1”, “ccc”=>”1”, “ddd”=>”1”,} permitted: false>, “commit”=>”検索”, “controller”=>”distributions”, “action”=>”search”} permitted: false>
“`

**こんな感じでフォームがくるので**

“`ruby
params[:hogehoge].permit!.select { |key, value| value == “1” }.keys
[“bbb”,”ccc”, “ddd”

元記事を表示

GoogleMapに複数のマーカーを表示する

GoogleMapに対象店舗と周辺店舗を表示させたいと思ったため調べたことを記録します。
当記事は、主にJavascriptの記述についての記載になるためGoogleMapのAPIキー取得等に関する記述は省略します。
条件としては以下のとおりです。

・地図の中心に対象店舗が表示される。(マーカーを立てる)
・対象店舗を中心として半径5km以内にある店舗にもマーカーを表示する。
・対象店舗と周辺店舗はマーカーの色を分ける。
・周辺店舗のマーカーをクリックしたときには吹き出しが表示される。
・吹き出しには店舗名が入っており、店名をクリックすると該当店舗の詳細ページに遷移する。

![Gif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700117/8b572b62-7e76-ffd4-fd9f-83bd6472ea55.gif)

### 開発環境
ruby 2.6.5
Ruby on Rails 6.0.3.3
OS: macOS Catalina

### はじめに
GoogleMapApiの使い方

元記事を表示

文字のだるま落とし(ruby編)

#[Ruby編]文字のだるま落とし
#問題
だるま落としは 5 段の木片からなり、その木片には 1 つにつき 1 つの英字小文字が書いてあります。
木片を飛ばす前の文字列と、飛ばしたのが何段目の木片であったかが与えられるので、木片を飛ばした後の文字列を求めるプログラムを作成してください。
#入力される値
入力は以下のフォーマットで与えられます。

S
N
・1 行目には、木片を落とす前の文字列を表す S が与えられます。
・2 行目には、何段目の木片を落とすかを表す整数 N が与えられます。
・入力は全部で 2 行となり、最後に改行が一つ入ります。
#期待する出力
木片を落下させた後にできる文字列を出力してください。

末尾に改行を入れ、余計な文字、空行を含んではいけません。
#入力例1
apple
2
#出力例1
aple
#入力例2
water
5
#出力例2
wate
#私の答え
“`java:
a = gets.chomp
b = gets.to_i
str = a.slice!(b – 1)
print a
“`
#今回のポイント
###1行目で文字列の呼び出し
###2

元記事を表示

deviseでログアウト時に確認ページに遷移させる

# はじめに
railsでdeviseをしようしたログインログアウト機能を実装していて、
ログアウトした際に確認ページに遷移するように実装していたところ
つまずいたので記事にしようと思います。
さらに良い方法とかがあればコメント欄か編集リクエストに記載願います。:bow_tone2:

# バージョン情報
– ruby 2.6.5
– rails 6.0.3.3

# 前提条件
– hamlでの記載(gem ‘haml-rails’)
– deviseが導入済みでログインができている

# コントローラーの変更
sessions_controllerの**respond_to_on_destroy**がデフォルトで記述されていて
root_pathに遷移されるようになっていました。
なのでここのコードを削除します。
そこに**render ‘遷移先URL’**を記述することでURL先のページに遷移することができます。

~~~ruby
# controllers/users/sessions_controller.rb

def destroy
signed_out = (Devi

元記事を表示

Git ブランチ作成・削除・便利コマンド【Gitコマンド】

#ブランチとは
**ブランチ(branch)**は、1つのプロジェクトから分岐させることにより、プロジェクト本体に影響を与えずに開発を行える機能のことを言います。つまり変更などの履歴を分岐してそれぞれ記録していくということですね!
分岐したブランチはほかのブランチの影響を受けないので、同じレポジトリの中で複数の変更(実装)を同時に進めていくことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/830447/1377ebde-e562-4eb1-a35f-ad9ba93f16fb.png)

このように複数のブランチで開発を行い、それぞれのブランチで異なる機能の実装を行い実装が完了したタイミングなど(チームや作業者で異なります)で、統合(merge)して開発を進めていきます。
#ブランチの作成関連
※ブランチを移動する前にはcommitが必要になります。commitせずに移動しようとするとcommitしてください的なerrorが出るのでその際は潔くcommitしてから移動しましょ

元記事を表示

【アウトプット】eachについて

eachについて
何をするものか
配列の中身などを繰り返しやってくれる働きをもつ
例)
<% @posts.each do |post| %>
postsは変数名 postはとりあえず配列の中身を入れるやつ
< div class = "posts-index-item">

< % = post.content %>
ここはpostだけでも良い状況がある。
今回はターミナルでPost.allで配列を取っている(contentというカラム名にデータがある為)
< /div>
<% end %>

例をあげたら余計にややこしくなったが繰り返しの処理を書くときにeachを書いたら
短く書けるということ。

元記事を表示

【個人メモ】RailsアプリをAWSへデプロイする際につまづいたことまとめ

## index
下記の記事の通りにRailsアプリをAWSへデプロイする際につまづいたことを個人的な備忘としてまとめました。

(下準備編)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで
https://qiita.com/naoki_mochizuki/items/f795fe3e661a3349a7ce
https://qiita.com/naoki_mochizuki/items/22cfbf4bf7ec95f6ac1c
https://qiita.com/naoki_mochizuki/items/814e0979217b1a25aa3e
https://qiita.com/naoki_mochizuki/items/5a1757d222806cbe0cd1

## RDSインスタンスが生成できない
RDSの設定をして、「データベースの作成」をクリックすると、こんなエラーが発生。

“`
DB Subnet Group doesn’t meet availability zone coverage requirement. Please ad

元記事を表示

Railsのサーバーが起動できない時の対処法

# はじめに
初めまして。
私は未経験エンジニアとして転職するべく、1週間前にMacBookProを購入し、Progateで学習をしている者です。
早速ですが、Ruby on Railsの環境構築をする時に詰みました。

# rails s が起動しない
Progateに言われるがままAtom, Homebrew, rbenv, Railsをインストールし、後はローカルでサーバーを建てるだけ。
しかし、

“`
rails s
“`

と入力すると

“`
Could not find gem ‘rails (~> 6.0.3, >= 6.0.3.4)’ in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
“`

何のことやら。
とりあえず

“`
bundle install
“`

と入力しろと書いてあるので実行してみます。

“`
An error occurred while installing bindex (0.8.1)

元記事を表示

Ruby on Railsの開発環境をDockerで構築する方法(Rails 6.x)

[Docker公式手順](https://docs.docker.com/compose/rails/)を参考に、Rails 6系で Dockerの開発環境を構築する手順を詳解します。

各コマンドの詳しい解説は私が以前に書いた [Rails5系での手順](https://qiita.com/tmasuyama/items/d12f9ebce7644f18a047) で解説しているので、本記事では割愛します。

## Rails プロジェクトを作成

“`
$ docker-compose run web rails new . –force –no-deps –database=mysql
“`

## コンテナをビルド

“`
$ docker-compose build
“`

## データベースファイルの修正

上記実行後、config/database.yml ファイルを下記の通りにまるっと修正します。

“`config/database.yml
default: &default
adapter: mysql2
encoding: utf8mb4

元記事を表示

TECH CAMP (エンジニア転職)6週目の学習内容の振り返り

火曜日から本格的に最終課題の学習にはいったのですが、火曜日から日曜日までで6割ぐらいは進めた(?)と思います。この調子ですすめて22日までは必要な作業すべてを終わらせたいですね。それが終われば自分のポートフォリオを進めれる、、、ぐへへへ(変人感)
復習に入っていきたいところですがその前に、最終課題とはなんなのか、どんなことをやるのか少し話していきたいと思います。最終課題ではメルカリのようなフリマアプリの作成を通してサーバーサイドの実装を行っていきます。フロントサイドに関してはすでに用意されているのでやらなくても大丈夫です。この最終課題と今までの学習内容の違いはなにかというと、目標を達成(機能実装)するための手順を自分で考えないといけないところです。今までのカリキュラムだと、テキストに沿って決められたことをこなしていけばよかったのですが、最終課題においては機能実装を行うためにどのような工程が必要か自分で道筋を立てながら学習していくことになります。
例えば、ユーザー登録機能を作るならカラムの洗い出しとDB作成、必要なアクションの定義などなどがあります。最終課題以前だとカリキュラムに書かれた

元記事を表示

【Rails】テーブルのカラム名の変更方法

#テーブルのカラム名の変更方法について

Railsでテーブルのカラム名の変更方法についてまとめました。
ステップとしては下記の通りです。

① migrationファイル作成
② migrationファイルの編集
③ データベースへ反映

今回は下記のようにカラム名を変更します。

変更前
`wheather`

変更後
`weather`

|モデル名|カラム名(変更前)|カラム名(変更後)|
|:—–:|:———-:|:———–:|
|users | wheather | weather |

##① migrationファイル作成
まずはカラム名を変更するためのmigrationファイルを作成します。

`$rails generate migration rename_【変更前のカラム名】_column_to_【モデル名(複数形)】`

今回は
`$rails generate migration rename_wheather_column_to_users`
と記述する。

##② migrationファイルの編集
`

元記事を表示

[初心者]一気に複数行のインデント修正ができるワザ「矩形選択(ブロック選択)」について

#はじめに
Railsなどで、コードを打ち終わった後に、全体のバランスを整えたいと思う時ってありますよね。
コードを考えるのに夢中になってしまい、見返してみたら、インデントがバラバラで、めちゃくちゃ見にくいバランスになってしまっていたり。
また、複数の要素をまたぐ形で、親要素を後から追加しようと思って、子要素の全ての行に対して、1スペース分のインデントを空けなければならない時もあると思います。
プログラミング駆け出しの私は、インデントを空ける為に、ひたすらTABキーを打ち続けていました。

そんな中、「矩形選択」なるワザを知ってから、世界が変わりました。
知っている方も多いと思いますが、もし使っていないor知らない方がいたら、非常にもったいないと思いますので、この便利な技を共有させてもらいます。

#こんな時ってどうしてますか?
次のコードをご覧ください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/824345/adbff8d9-ce8c-087f-eab5-28f907a23bc6

元記事を表示

[Rails][ jQuery]フォームの入力ならびに選択が完了するまで送信ボタンを押せないようにする。

# はじめに
今回は、jQueryを使って、フォームの入力ならびに選択が完了するまで送信ボタンが押せないように設定していきます。

# 完成イメージ
![submitButtonJs.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683220/b556ddf7-7b7b-f2a5-04e4-272bbb477ab0.gif)

# 記事を書いた目的
情報の共有ならびに、自身の備忘録として執筆する。

# 導入した目的
誤送信を防ぎ、ユーザビリティを向上させるため。

# 環境
MacOS 10.15.7
ruby 2.6.5
Ruby on Rails 6.0.0

# 前提条件
– jQueryが導入済みであること。
– 画像の複数枚投稿機能を実装している。

#記事執筆者の状況
##テーブル
![Untitled Diagram-ページ2 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683220/281c6

元記事を表示

【Ruby On Rails】ネストした状態で、link_toメソッド内Prefixの後に書く括弧内の記述

すみません。完全なる備忘録です。。笑

# 前提
“`rubyonrails:show.html.erb
<% @fuga_events.each do |event| %>
—————————————-

    <%= "名前:#{event.hoge.name}" %>
    <%= "アプリ:#{event.hoge.app_name}" %>
    <%= "開始日:#{event.started_at}"%>
    <%= "終了日:#{event.finished_at}" %>
    <%= "todo:#{event.todo}" %>
    <%= "場所:#{e

元記事を表示

【Rails API + Vue】Active Storageを使って画像をアップロード・表示する

バックエンドはRails、フロントエンドはVueといった構成のときにActive Storageを使って画像をアップロード・表示する方法を、プロジェクトを1から作りながらまとめます
ソースコードは[GitHub](https://github.com/youichiro/rails-vue-file-uploader-sample)で公開しています

## 画像をアップロード・表示する処理の流れをざっくりと

– Vueで画像を選択して送信するための画面を作る
– 送信ボタンを押した時、画像をアップロードする処理を行うRails APIを呼び出す
– Railsは受け取った画像を`storage`ディレクトリに保存し、保存した画像のURLを返す
– Vueで画像のURLを受け取り、表示する

## Railsプロジェクトを作成する

↓のようなディレクトリ構成で作成していきます

“`
rails-vue-file-uploader-sample
└── backend # Railsプロジェクト
└── frontend # Vueプロジェクト
“`

まずはRailsプ

元記事を表示

Ruby on Railsの開発環境をDockerで構築する方法(Rails 5.x)

この記事では、Dockerを用いてRuby on Rails(以下、rails)の 5.x 系における開発環境を構築する方法を紹介します。
※Rails 6.x 系で Docker 環境を作りたい場合は [こちら](https://qiita.com/tmasuyama/items/9663dd9caac932e0b1e7) をご覧ください。

## Docker で環境構築をするメリットとは?

通常、rails の初学者の方はマシンに直接インストールして開発環境を構築する人がほとんどだと思います。
しかし、環境の微妙な際(Rubyのバージョンや環境変数など)によってつまづいた場合、
そのトラブルシューティングには多くの時間を要してしまうかと思います。

そこで、Dockerで仮想環境上にrailsの環境を構築してあげることで
どのマシン上の開発環境でも等しい動作を行うことができるため、環境の差異によるエラーを避けることができます。
環境をいじりすぎた時には最悪一度リセットを出来るというのもメリットですね。

また、作成したアプリケーションを本番環境として外部へ公開しようとするときに

元記事を表示

Amazon S3に画像を保存する(Local/Heroku)

# はじめに
自分用の備忘録

# 手順(Local)
## Gemインストール

“`:Gemfile
gem “aws-sdk-s3”, require: false
“`
## 保存先を変更

“`ruby:config/environments/development.rb
config.active_storage.service = :local

#下記に変更
config.active_storage.service = :amazon
“`

## storage.ymlに追記

“`yml:config/storage.yml
amazon:
service: S3
access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
region: ap-northeast-1
bucket: バケット名
“`

## 環境変数を設定

“`:ターミナル
# Catalina以降
% vim ~/.zshr

元記事を表示

OTHERカテゴリの最新記事