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

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

Railsで投稿編集時に予め所属カテゴリにチェックをつける方法

多対多の関係のPostとCategoryをもつテーブルに置いて、Post編集時に既存のカテゴリに予めチェックボックスをつける方法。`form_with model: @post`の形式を使わないと`{checked:}`オプションを使えないので少しハマった。

## 前提:多対多のテーブル構成を実現する
以下を参考にテーブル構成してる前提です。ただし投稿の`title`は本記事では`name`になってます。

[Railsで投稿とカテゴリの紐付け機能を実装する](https://qiita.com/cawaz3/items/e755a58177212f2aca6c)

## collection_check_boxesの引数に`{checked:}`オプションを追加
前段の多対多のテーブルを作成している前提だと、`@post.category_ids`で所属カテゴリを配列で取得できるらしい。それに`.map(&:to_param) `してやることでチェックが付く。この`&:to_param`というのはいつも固定で、`@post`や`category_ids`のようにテーブルやモデルの名

元記事を表示

本番環境の設定ファイルをふっ飛ばした話

## はじめに

Qiita夏祭り企画参加の記事です。
テーマページ②:システム開発における過去の失敗と乗り越えた方法について共有しよう!
こちらのテーマに参加します。

## アプリケーション詳細

Rails製の本番稼働しているアプリがありました。
そのアプリは`.env`ファイルに本番で使っている環境変数が定義されていました。
`.env`ファイルは本番の接続情報を持っているためgit管理対象外となっていました。
ローカルに環境構築をする用に`.env.example`はgit管理で用意されていました。

中身は以下のようなもの

“`:.env.example
# Railsの設定
RAILS_ENV=development

# Bitbucket APIの設定
BITBUCKET_KEY=XXXXXXXXXXXXXXXXXX
BITBUCKET_SECRET=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
“`
Bitbucketと連携するためにAPIキーが設定されていました。
環境構築時には以下コマンドを実行してください、というのがREADMEに書い

元記事を表示

インクリメンタルサーチ

#はじめに・目的
– search controllerのhtml viewでの検索機能だと、ワード全て入力して検索しないといけない。
– jsonを使ったインクリメンタルサーチだと、非同期で検索可能。
– テーブル内で検索が頻繁に行われるカラムにインデックスを設定することで検索の高速化を図る。
– 今回はtweetsテーブルのtextカラムにインデックスを貼ることで、データの検索を高速化する。

“`terminal:terminal
$ rails g migration AddIndexToTweets
“`
“`ruby:マイグレーションファイル
class AddIndexToTweets < ActiveRecord::Migration def change add_index :tweets, :text, length: 32 end end ``` →migrate実行 #1.ルーティングなどAPI側の準備 ##Formatごとの条件分岐 ```ruby:app/controlers/tweets_controller.rb def sear

元記事を表示

flag_icon_cssを使って、railsに国旗を表示させる

#fontawesomeに国旗がないぞorz
[fontawesome](https://fontawesome.com/)で、国旗のフォントを探してみると….

**ない…ないのか…**

他に使えそうなものないかなと調べてみると、
[flag_icon_css_rails](https://github.com/thethanghn/flag_icon_css_rails)なるものが!!

使い方は、“`README.md“`にあるとおりですが、一応記録に残しておきます。

##①’flag_icon_css_rails’のインストール

“`:gemfile

gem ‘flag_icon_css_rails’
“`

“`terminal
bundle install
“`

“`
rails g flag_icon_css_rails
“`

##②requireします

“application.scss“に“@import ‘flag-icon’;“を追記する。

“`app/assets/stylesheets/applicat

元記事を表示

[Rails] データベースに変更を加える手順

Progate学習メモ

# 1. マイグレーションファイル(だけ)を作成
`rails g migration マイグレーションファイル名`

Usersテーブルにimage_nameというカラムを追加させたい時は、
`rails g migration add_image_name_to_users`
という感じに

# 2. マイグレーションファイルのchangeメソッドに変更内容を書く
“`.rb
class AddImageNameToUsers < ActiveRecord::Migration[5.0] def change # ここに変更内容を書く # add_column :テーブル名, :カラム名, :データ型 add_column :users, :image_name, :string end end ``` # 3. マイグレーションファイルの内容をデータベースに反映させる `rails db:migrate`

元記事を表示

jqueryでsubmitボタンを毎回有効にする方法

###テックキャンプでJavaScriptの学習中に学んだ事

jQueryを使って非同期通信の学習をしている最後に、送信ボタンを押してイベント発火後に
送信ボタンが無効化されているのを有効にする方法を記します。

“`
$(‘#hoge’).prop(‘disabled’, false);
“`

調べてみてわかった事は

– Railsのver5.0以降はdisabledがデフォルトで設定されている事(連打防止等の為)
– 他にも有効に出来る方法はある

例えば

“`
$(‘#hoge’).attr(‘disabled’, false);
“`

自分のコードで試したが、どちらでも有効でした

今度は連打防止などの方法も調べて使え様にしていきます

非同期通信が自由に扱える様になると、少ないビューファイルの中に沢山の動的要素を
取り入れる事が出来て、かつレスポンスも早そうなので、プログラミングを学びたての自分でも
魅力的だなって感じました。

難しいけど面白い

元記事を表示

Rails 基礎的なCRUD機能実装手順 scaffold

# 前置き
Ruby on Railsを使って、基礎的なCRUD機能を実装する手順をまとめる。
CRUDとはCreate、Read、Update、Destroyの頭文字を取った用語。
## アプリ立ち上げ
ターミナルで、railsコマンドを使って、アプリを作成する。

“`terminal
rails new blog_app -d postgresql
“`

このコマンドだと、新しくblog_appを作成している。
使い慣れているので、データベースはpostgreSQLにしている。何も指定しない場合、sqlite3がデータベースになる。その後、アプリのルートディレクトリに移動(cd blog_app)し、ターミナルで

“`terminal
rails db:create
“`

を入力し、データベースを立ち上げる。
サーバーを立ち上げて、アプリが出来ていることをローカルで確認する。

“`terminal
rails s
“`

![rails.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com

元記事を表示

【Rails】CSVインポート機能の実装

# 目標

![ezgif.com-video-to-gif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579893/f912e2cb-07f7-b670-af6b-e35fe22e1ee8.gif)

# 開発環境
・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・OS: macOS Catalina

# 前提

下記実装済み。

・[Slim導入](https://qiita.com/matsubishi5/items/b639ffddecc626856039)
・[Bootstrap3導入](https://qiita.com/matsubishi5/items/b117c95f4dd71340cc80)
・[投稿機能実装](https://qiita.com/matsubishi5/items/1a5aeab651b5822d1f2c)

# 実装

## 1.Gemを導入

“`ruby:Gemfile
# 追記

元記事を表示

【日本語化】 i18n rails 楽々日本語化 viewの表示のみ

##【ゴール】
viewだけ日本語表示へと切り替え

##【メリット】
■ UIの向上
■ 日本語なので可読性向上し、開発効率化

##【開発環境】
■ Mac OS catalina
■ Ruby on Rails (5.2.4.2)
■ Virtual Box:6.1
■ Vagrant: 2.2.7

##【実装】

####アプリケーション作成

※ touchでfileを作成

“`mac.terminal
$ rails new japoanese
$ rails g controller homes index
$ cd config/locale
$ touch ja.yml
“`

※下記追記後 bundle install

“`gemfile.追加
gem ‘rails-i18n’, ‘~> 5.1’
“`

※ホーム画面へhomes/indexを!!

“`routes.rb
root ‘homes#index’
“`

※インデント要注意、

“`locale/ja.yml
ja:
 homes:
index:
titl

元記事を表示

RailsとVueのアプリでbin/webpackできない

Vueを導入したRails6アプリでbin/webpackがエラーになったのでメモ。
これはアプリの初期段階で行ったもので、色々変わっても問題ない状況で試したことです。
なのでもう実装が進んでる方の場合は気をつけてください。

bin/webpackを実行したら、

“`
error Command “webpack” not found.
“`
というエラーが出た。

なぜかはわからないが、

“`
yarn add webpack
“`
でwebpackをインストール。

再度bin/webpackをすると、

“`
One CLI for webpack must be installed.
–省略
Do you want to install ‘webpack-cli’ (yes/no):
“`

と出たので、yesでwebpack-cliをインストール。

再度bin/webpackすると、

“`
Error: Cannot find module ‘@rails/webpacker’
“`

というエラー。

“`
bin/rails webpacke

元記事を表示

【学習メモ】ぶち当たったエラー集 RailsアプリをHerokuへのデプロイ

#目次
– 背景
– 実装環境
– ぶち当たったエラー
– 学び
– 参考
– 今回のエラーメッセージ(修正前)

#背景
ポートフォリオを、仮の状態でもいいからデプロイしてWebサイトに公開することを挑戦。しかし幾度のエラーに直面して心折れそうになったが、問題解決できたので、その過程を整理して自分で理解し直す目的と、同じような躓きをしてしまった方のためにも、参考材料となればと思い、公開します。

#実装環境
– Rails:5.2.4
– DB:PostgreSQL **※デフォルトでPostgreSQLを採用**
– Rubyのbuildpackはインストール済
(heroku create –buildpack https://github.com/heroku/heroku-buildpack-ruby.git)
※buildpackについては、[Qiitaの記事](https://qiita.com/arekore0/items/eae550bdbcc78eeac082#%E3%81%A9%E3%81%86%E3%82%84%E3%82%89)と、[Heroku公式ガイド]

元記事を表示

deviseの使い方 導入から設定変更

# はじめに
勉強のためにdeviseを使い、ログイン周りを作成しました。
デフォルトではユーザー名、パスワードで認証しますが、今回社員番号、パスワードで認証するよう設定を変更していきます。

# 環境
Ruby 2.5.3
Ruby on Rails 5.2.4
Devise 4.7.1

# 完成
スクリーンショット 2020-06-24 16.00.39.png
スクリーンショット 2020-06-24 16.00.56.png
boot

元記事を表示

[Rails] エラーメッセージ を表示する - render、redirect_toの違い、flashについて –

エラーメッセージを表示する方法について書きます。
Railsでメッセージ出力する際によく使用されるrender、redirect_to、flashについても簡単に書きます。

##実装したいこと
フォームの入力値に誤りがあるときに、以下のようなエラーメッセージを表示させる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542905/7c6769df-b104-89a7-c94f-802305f70a9e.png)

##実装したコード

“`login_controller.rb

@error_txt = ‘※入力に誤りがあるか、登録されていません。’
render :new
“`

インスタンス変数@error_txtにエラーメッセージをセットし、renderでテンプレートnewを表示させるように指定します。
※エラー判定の処理は省略しています

“`new.html.slim

– if @error_txt
p.error

元記事を表示

[Rails] バリデーションの書き方

Progate学習メモ

“`models/post.rb
class Post < ApplicationRecord validates :検証するカラム名, {検証する内容} end ``` # 色々なバリデーション カラムが存在するかどうか `validates :content, {presence: true}` 最大140文字まで受け付ける `validates :content, {length: {maximum: 140}}` 重複がないか `validates :email, {uniqueness: true}` # バリデーションをまとめて書く ```models.post.rb class Post < ApprocationRecord validates :content, {presence: true, length: {maximum: 140}} end ```

元記事を表示

railsでDATABASE_URLを使う際の注意点

# 概要
環境変数のDATABASE_URLを使うとユーザー名やパスワードなど複数の項目を1つの環境変数で指定出来て便利です。
しかしハマりポイントもあるのでDATABASE_URLを使う際の注意点を紹介します。
なお本番環境にはあまり関係ない話です。

投稿時点でのrailsのバージョンは6.0.3.2です。

# 優先順位について
database設定の優先順位は下記の通りです。

1. database.ymlのurl項目
2. 環境変数DATABASE_URL
3. database.yml

参考url
https://railsguides.jp/configuring.html#%E6%8E%A5%E7%B6%9A%E8%A8%AD%E5%AE%9A

# DATABASE_URLが使われるのは現在のRAILS_ENVだけ
DATABASE_URLが使われるのは現在のRAILS_ENVだけのようです。
しかしRAILS_ENVがdevelopmentの場合はtestに対してもtaskが実行されます。
そのためdevelopmentで `db:create` を行うとtes

元記事を表示

dockerとmysqlでrails環境を構築したけどドハマリした

dockerにrails環境を作った
https://qiita.com/NA_simple/items/5e7f95ae58eec5d20e1f

途中なぜか上手くいかないと思ったら、mysql-clientsがインストールできなくなっているらしい。書き換え方は下のURLを参考に。
https://qiita.com/yagi_eng/items/1368fb2a234629a0c8e7

調子に乗ってすすめていると、またハマる。

“`ruby:terminal
$ docker-compose run web rails db:create
Starting postgress_db … done
Could not find activesupport-5.2.4.3 in any of the sources
Run `bundle install` to install missing gems.
“`

なぜだ、、、と思ったらrubyのバージョンが違う??
rbenvでバージョンを探しても、2.7.1が見つからず。
rbenv古い事に気づき、アップデート

rbe

元記事を表示

update_attributes is deprecated and will be removed from rails 6.1

##備忘録です。

題名のとおりのwarningが出ました。

“`terminal:railsconsole
DEPRECATION WARNING: update_attributes is deprecated and will be removed from Rails 6.1 (please, use update instead)
“`

***Rails6.1からupdate_attributes***ではなく“`update“`に置き換わる(すでに使える)そうなので、書き換えたら***warning***がなくなりました。

元記事を表示

【Rails】 本番環境MySQLデータを開発環境に入れた後に消す方法

# はじめに

本番環境にMySQLのデータを開発環境に入れる時には特にエラーもなくインプットすることができたのですが、消す時になってエラーが発生してハマってしまいました。
少し珍しいケースかもしれませんが、他の方の参考になればと思いまとめることにしました。

#### 関連リンク
そもそも本番環境のMySQLのデータをどうやって開発環境に入れるのかという記事は下記をご参照ください。

* EC2からMySQL(RDS)接続後にローカルMySQLにデータを入力する方法
* https://qiita.com/syukan3/items/d73d23611c8bfccfa7e4

# エラー

開発環境でDB自体を削除するコマンドを実行したところ、、、

“`
$ rails db:drop
“`

エラー“`ActiveRecord::ProtectedEnvironmentError“`が出ました。。。

このエラーの意味は、

本番環境のDBを操作しようとしているが問題ないですか?

という警告のようなもので、環境変数を入れると操作を続けることができるよ。と言っ

元記事を表示

RailsでHerokuにデプロイしたときに一部ページだけ500エラーとなるとき

マイグレーションファイルは慎重に作成し、ミスったらやり直すくらいの覚悟じゃないとHerokuにpushして`heroku run rails db:migrate`したときに沼にハマるよという話。

##発生している問題
ローカル環境ではキチンと動くのに、([SQLite->Postgresへの対応などの基本的な設定](https://qiita.com/kazukimatsumoto/items/a0daa7281a3948701c39)を済ませてから)Herokuにデプロイするも、一部のページだけが500(Internal Server Error)となる。フロントでは「We’re sorry, but something went wrong.」なので、404の「The page you were looking for doesn’t exist.」とは違って内部的なエラーが発生している。
スクリーンショット 2020-06-23 21.58.17.pngRailsチュートリアル(第4版)メモ 第6章

Railsチュートリアル(第4版)の個人メモ
気になった部分、忘れそうな部分を記述。

– Ruby 2.6.1
– Rails 5.1.6

前章の最後 (5.4) でUsersコントローラを作成した。そのつづき。
6〜12章にかけて、ユーザ認証の各機能について作成していく。
6章ではこのうち、ユーザのデータモデル、保存について扱われている。

※ おわび
ナレッジになりきれていないメモをQiitaに上げるのが違うような気がしてきたが、
記事として所感を上げれば、それなりに反応があり、勉強にもなったため、お目汚しにはなりますが何卒ご容赦を。
そして最近Rails書いてないのだが下書が埋まってきたので放流。

# 6章 ユーザーのモデルを作成する
Railsでは認証を実装するための仕組みが既に整っているが、サービスごとに認証には多くのカスタムが必要になる。
このため、車輪の再発明にはなるが、方法を知っていればサードパーティ製の認証も実装しやすくなるので、Railsチュートリアルでは車輪を再発明している。

## 6.1 Userモデル
Railsは、データモデルとして扱うデフォルトのデ

元記事を表示

OTHERカテゴリの最新記事