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

Rails関連のことを調べてみた2019年11月21日
目次

【vue.js】チェックボックスでチェックされているときとチェックされていないときでそれぞれ値を送る方法

#はじめに
最近、rails+Vue.jsの組み合わせで使う必要があり、備忘録的につまったところを残していこうと思います。
今回はタイトルにもある通り、チェックされているときとチェックされていないときにそれぞれ値を送る方法についてまとめました。
もっと良い感じに書けるなどありましたら、コメントいただけると嬉しいです。。

#実装してみる
##erbの場合
`erb`の場合、下記で実現できます。

“`erb
<%= f.check_box :is_mon_monthly_contract, {checked: child_fee.plan.is_mon_monthly_contract_target?}, :target, :non_target %>
“`

これでチェックされている場合は`target`、チェックされていない場合は`non_target`が送られます。
ちなみにinput要素のチェックボックス自体にチェックされていない場合の値を指定する方法はないようです。
でも、erbでは実現できているじゃないか。。と思い調べてみたところhiddenを使用することで実現している

元記事を表示

不鮮明な部分

後で穴埋めする

名前付き

9以降

元記事を表示

基本的な部分

抜けて検索しがちな知識や単語を書く

元記事を表示

Ruby 条件分岐 繰り返し処理 総集編

ruby 総集編 part2
ここでは処理の仕組みや流れを解説します
※ググればすぐ出る、メソッドの意味などは割愛します。

お題
・条件分岐 if~end
・繰り返し処理 while true do~end

本題
●条件分岐 if~end
スクリーンショット 2019-11-21 0.07.16.png
注意点
コードを読む順番
def~endは、無視されます
if内のpost_reviewがpost_reviewをメソッド呼び出します。
※defとはメソッドを定義するコードです
スクリーンショット 2019-11-21 0.12.34.pngdevise+omniauth-rails_csrf_protection+[facebook/google]を使ったユーザ登録とログイン

##この記事で解決できること
deviseを使ったSNS認証ログイン
snsのユーザ情報を利用して登録フォームに入力する

**メールアドレスで登録するとき**
スクリーンショット 2019-11-21 6.07.31.png

**snsを使って登録するとき**
スクリーンショット 2019-11-21 6.05.44.png

##開発環境
MacOS Mojave 10.14.6
ruby 2.5.1
Rails 5.2.3
mysql

元記事を表示

Template repositoryを使って、Rails on Dockerの初期設定を共通化させてみた

## Railsプロダクトを作るたびに、毎回Rails環境作るの面倒…

と思うことありませんか?

私の場合は
Dockerの設定して…
いつも使うGemの設定して…
CircleCI設定して…
細かい調整してと…

DockerでRails環境を作成するために、やるようなことって
ちょっと面倒な割りに、共通化出来ることありますよね。

そういう時は、GitHubの新機能である `Template repository` を使ってみるといいです!

参考

Generate new repositories with repository templates

## Template repositoryの説明

手短に説明するとこんな感じです。

– Template repositoryとしてセッティングしたリポジトリのファイルをコピーした状態で新しいリポジトリを作成出来る
– しかし、commit履歴は引き継がないので、ファイルだけコピーしたい場合に重宝する

### 何が便利か?

毎回行うよう

元記事を表示

ActiveAdmin の定義済みコールバック

[ドキュメント](https://activeadmin.info/)に見つからず、[ソース](https://github.com/activeadmin/activeadmin/)を読んでいたら見つけたのでまとめ。

# 定義済みコールバック

https://github.com/activeadmin/activeadmin/blob/master/lib/active_admin/resource_dsl.rb#L162

| before/after_XXX | コールバックが呼ばれるアクション |
|—|—|
| `build` | new and create actions |
| `create` | create action |
| `update` | update action |
| `save` | create and update actions |
| `destroy` | destroy |

## 使い方

controllerブロックを使わずに、すっきり書けます。

“`rb
ActiveAdmin.register Post d

元記事を表示

#Rails + FactoryBot でデータ作成 create での validation を無効化する例 : trait を利用

# trait 指定なし

“`rb
FactoryGirl.define do
factory :person do
name { nil }
sex { nil }

to_create { |instance| instance.save(validate: false) }
end
end
“`

# trait 指定あり

こいつで範囲を限定的にできる

“`rb
FactoryGirl.define do
factory :person do
name { nil }
sex { nil }

trait :no_validation do
to_create { |instance| instance.save(validate: false) }
end
end
end
“`

# Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/2745

元記事を表示

【GitHub Actions】 RailsアプリをRuboCop/ESLintチェック+Slack通知+キャッシュする

本記事は、先日投稿した[NuxtアプリをGitHub ActionsでGAE環境にデプロイする](https://qiita.com/curosuke/items/a8d4a6cf456160d8a3ed)の**Railsアプリ版**です

## やりたいこと
– GitHub Actions上で「RuboCop/ESLint」のチェックを実行する
– 上記の実行結果をSlackに通知する
– ワークフローの高速化のために`bundle install`と`yarn install`の結果をキャッシュする

## 対応内容
以下の設定で実現できました

“`yml:.github/workflows/feature.yml
name: Rubocop & ESLint checks

on:
push:
branches:
– feature/*
– hotfix/*

jobs:
build:
runs-on: ubuntu-latest

strategy:
matrix:
ruby: [ ‘2.

元記事を表示

Ruby  変数 ハッシュ 総集編 

総集編になります。
ここでは処理の仕組みや流れを解説します
※ググればすぐ出る、メソッドの意味などは割愛します。

お題
●変数、代入、再代入
●ハッシュ、キー、バリュー

本題
●変数、代入、再代入
スクリーンショット 2019-11-20 10.25.28.png
上記をご覧になりながら説明します

まず代入です。Hello Worldをvalueに代入します。
左辺 = 右辺 の式は、
右辺を左辺に代入という意味です。
ここでいう、左辺を変数、右辺を変数に定義する内容です。

では、進めていきます
puts valueとは、変数を表示という意味です

value = See Youは、最初に代入した内容を再代入してます。numberの中身を変更します。とう宣言です。
最後は、再代入したものをputsしている。

元記事を表示

Rails Devise+carrierwaveでのストロングパラメーター メモ

自分用メモ
ストロングパラメーターのkeysが間違っていて画像が保存されず書き方を調べてうまくいったのでメモ。

###Deviseを使っている場合の画像用のストロングパラメーター。

モデル作成+アップローダー作成後にストロングパラメーターを追加
                ↓
keysはregistration.htmlなどのフォームを見ればわかるのでそれを全部追加
                ↓
アップローダーの紐付け

“`app/models/user.rb
mount_uploader :avatar, AvatarUploader
“`

今回の場合↓

“`registration_controller.rb
protected

def configure_account_signup_params
devise_parameter_sanitizer.permit(:sign_up, keys: [:username, :image, :email, :password, :password_confirmation])
end

元記事を表示

Railsのテスト環境にデバッグ用の情報を表示する

Viewファイル内に
`<%= debug {変数} if Rails.env.development? %>`
を追加すると、テスト環境で任意の変数の中身を出力することができます。

####`@user`の中身を確認したい時

“`
<%= debug @user if Rails.env.development? %>
“`

####`params`を確認したい時####

“`
<%= debug params if Rails.env.development? %>
“`

`/app/views/application.html.erb`に記述することで、全てのページでの出力が可能です。

/app/views/application.html.erbの最下部に`<%= debug params if Rails.env.development? %>`と記述した場合の表示。
 2019-11-20 19.57.13.pngRailsアプリをHerokuにデプロイする手順

本記事は、以下の記事を自分用にまとめ直したものです。
[【初心者向け】railsアプリをherokuを使って確実にデプロイする方法【決定版】](https://qiita.com/kazukimatsumoto/items/a0daa7281a3948701c39)

・Gitのインストール、Commit
・Heroku CLIのインストール
はできている前提で話を進めます。詳しい内容が知りたい方は、上記の記事をご参照ください。
##1.Railsでアプリを作成
各自アプリを作成します。rootにアクセスされた時にルーティングを忘れずに設定してください。

##2.Gemfileの設定
開発環境(ローカル)、本番環境(Heroku)のそれぞれで利用するデータベースの情報をGemfileに記述します。
まず12行目付近の`gem ‘sqlite3’`をコメントアウトします。

“` Gemfile
# gem ‘sqlite3’
“`
次に40行目付近`group :development, :test do ~~ end`内に、開発環境、テスト環境用のデータベースに関するGemを追

元記事を表示

uninitialized constant Tweet::ImageUploader   carrierwave mini_magick 導入

写真アップ機能追加のために

$ brew install imagemagick
ターミナルで実行

gem ‘carrierwave’
gem ‘mini_magick’
Gemfileに記載
$ bundle install
$ rails g uploader image

app/models/tweet.rb に下記記載
mount_uploader :image, ImageUploader

app/uploaders/image_uploader.rbに下記記載
include CarrierWave::MiniMagick
process resize_to_fit: [800, 800]![スクリーンショット 2019-11-20 19.20.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536447/bf77b403-9d3a-8811-67cb-ab05cf37249c.png)

このようなエラーが出ます原因は何でしょう?
$ brew install image

元記事を表示

Elastic Beanstalk + Railsで、can’t find gem bundlerが発生する問題

## EC2インスタンスが初期化or再構築された際に、発生する

Railsアプリをデプロイする際、EBは`/opt/elasticbeanstalk/hooks/appdeploy/pre/10_bundle_install.sh`を呼び出し`bundle install`を実行する。
この際、Bundlerのバージョンがデフォルトは1.16.0という古いものになっており(何で?)、最近のバージョンのRailsでは互換性がなくエラーが発生する。

“`
ERROR: [Instance: i-###############] Command failed on instance. Return code: 1 Output: (TRUNCATED)…:infind_spec_for_exe’: can’t find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException) from /opt/rubies/ruby-2.5.5/lib/ruby/site_ruby/2.5.0/rubygem

元記事を表示

rails アプリをherokuに上げるまでの道のり プログラミング学習42日目

##DBはpgがやりやすい
自身の開発環境のdbはmysql2でherokuつまり本番環境のデフォルトのDBはpgらしい。herokuのDBをmysql2に変更することもできるっぽいが、今回は自身の本番環境をpgにします!

##エラーの嵐
“`
$git add .
$ git commit -m “change DB adapter to PG”
$ git push heroku
“`
とherokuのプッシュしようとするととてつもない長さのエラーが出てしまいました。

エラーの原因はいくつかありました。
1.database.ymlの中身がmysql2を示していた
訂正後

herokuのsettingのものと合わせます(以下画像)
スクリーンショット 2019-11-20 18.12.57.png

元記事を表示

railsでsubmitをキャンセルする

参考:https://www.sejuku.net/blog/28720#submit

「false」を渡してあげるだけです。

“`javascript

<%= form_for @wifi_agency, html: {class: 'form'} do |f| %>
<%= f.text_field :name, :class=>“form-control”%>
<%= f.submit "保存", class: "btn btn-success", :onclick => “return check_name()”%>
<% end %>


“`

元記事を表示

git checkoutによって エラーが何か追求する プログラミング学習42日目

###そもそもなんでgithubを使うの?###
githubは簡単に言うと変更を記録したりするものです。
チーム開発などでは必須です。ただ僕は初心者なのであくまでも1人で使っています。

##githubは初心者1人でも使うべき##

例えば何か変更を加えたことでエラーが出てしまった時。エラーの原因が分からないから元に戻したい、そんな時にgithubは役に立ちます。![IMG_6445.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513269/0e556c64-5d46-056d-8a3f-7ff440e82403.jpeg)

こちらはインターン先のエンジニアの方に書いていただいたgithubの簡単な説明になります。masterがデプロイするもの(実際にサービスとしてリリースするもの?)で、そのよこのthongとsekiはエンジニアの名前です。

例えばmasterでA,B,Cまで作ってあり、それ以降を変更する場合各エンジニアはそれぞれのブランチでその変更作業を行います。理由→変更したものがそのま

元記事を表示

#Rails の validation で model のレコード・キーに関連しないエラーメッセージを自由に設定する

`:base` にエラーを追加すれば良さげ。

“`rb
class User < ApplicationRecord validate :heart def heart if heart.evil? errors.add :base, 'Be gentle' end end end ``` # Original by Github issue https://github.com/YumaInaura/YumaInaura/issues/2743

元記事を表示

バリデーションのエラー表示をなるべく出さない

Railsでバリデーションエラーのメッセージ表示を作り込むには、コストがかかります。なるべくHTMLとJavaScriptでバリデーションをやってしまい、Railsのバリデーションエラーはめったに出さない、というスタイルを目指したい。

## バリデーションの種類とHTML

確認したブラウザーは、Chrome、Firefox、iPhoneのSafari (2019年11月時点のバージョン)、およびIE11です。

### presence

input, textarea, selectなどたいていの入力欄ではrequired属性を使って、空かどうかをチェックできます。

#### input type=”text”

required属性で空文字列をチェックできますが、スペースだけの文字列はチェックされません。pattern属性に正規表現を追加して空白文字以外の文字が含まれるようにします。

“`HTML

“`

pattern属性の正規表現は、文字列全

元記事を表示

OTHERカテゴリの最新記事