Rails関連のことを調べてみた2021年09月04日

Rails関連のことを調べてみた2021年09月04日

Gemとは何か

#Gemとは
Gemはパッケージまたはパッケージ管理ツールです。
パッケージは便利な機能がまとまったものです。
別名ライブラリと言います。

例えばログイン機能や画像アップロードなどを
実装したい時にGem中にインストールすると
効率的に実装したい機能を導入することができます。

Gemをインストールするときは

“`
$ bundle install
“`
でインストールできます。

⚫︎補足  bundlerとは?
Bundlerはgemを管理してくれるツールです。bundlerもgemの1種です。
いろいろなgemを管理してくれます。

#Gemを導入する時にはどんなものがあるか。

例えば

“`Gemfile“`

gem “pry-byebug” #デバック
gem “pry-rails”   # デバック
gem “rspec-rails” #RSpec
gem ‘devise’ #ユーザー管理
gem ‘kaminari’ #ページネーション

“`

などがあります。

#Gemの中身
全部は説明できませんが押さえておいた方がいいものだけ

元記事を表示

Rails 無限スクロール(gem、ライブラリ無し)

####はじめに
「Rails 無限スクロール」と検索するとたくさんの記事が出てきます。kaminariやjsライブラリを利用して作成している記事をたくさん見かけますが、今回は自分の学習のためにもgemやライブラリなしで実装をしていきたいと思います。(デフォルトのgemであるjbuilderと記法を変更するだけのjqueryは利用します。)

####完成イメージ
![ezgif.com-gif-maker.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1585805/1cd6c8e5-b3df-16c2-f948-2ab2bace8d42.gif)

####前提条件(無限スクロール実装前)
簡単な例を作成して記事を書いていきます。下記の条件でbooksテーブルに100件レコードを作成しました。
erd

Rails HTTPメソッドとREST APIについて

#HTTPメソッドとは
クライアントからサーバーにこういうことをやりたいと伝えるためのものです。

⚫︎どういうことを伝えるのか
例えば
このデータを消してくれ 更新してくれ、そのデータをよこせと
お願いをします。これが***メソッド(HTtPメソッドリクエスト)***です。

クライアントとサーバーについては
https://qiita.com/Hashimoto-Noriaki/items/c5c9eb26565b01150556
から参照してください。

#よくHTTPメソッドの種類
よく使うHTTPメソッドは4つです。

***1 GET 2 POST 3 PUT 4DELETE***

それぞれ見ていきましょう。

***1 GET***
***データ(リソースの取得)***
例えば webページやAPIのデータをよこせみたいなお願いの時使います。

***2 POST***
***データの送信***
主に***新規作成***をしろとお願いをする時に使います。
例えば新しくアカウントを作る時やブログを新規で投稿するときです。

***3 PUT***
***デー

元記事を表示

railsチュートリアル第4章 メソッドの定義

###演習
1.lengthメソッドを使って調べろ

“`rb
>> a = “racecar”
=> “racecar”
>> a.length
=> 7
“`
2.reverseメソッドを使って調べろ

“`rb
>> a.reverse
=> “racecar”
“`

3.等しいか比べろ

“`rb
>> s = “racecar”
=> “racecar”
>> s == s.reverse
=> true
“`
等しかった。

4.“`puts “It’s a palindrome!” if s ==s.reverse
“`を実行するとどうなるか?

“`rb
>> puts “It’s a palindrome!” if s == s.reverse
It’s a palindrome!
=> nil
“`
nilが帰ってきた。
なんで?

“`
puts “foo”は文字列「”foo”」を副作用としてスクリーンに表示しますが、戻り値には「文字どおりの無」であるnilを返します
予想ではsと等しい時に表示させると思う。
“`
なんかわからんけど

元記事を表示

[Rails] ArgumentError Nil location provided. Can’t build URI. が出た時の対処法 

# ArgumentError
![スクリーンショット 2021-09-03 22.04.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1572216/8db3023b-0afd-c385-d23a-fc0654fcff50.png)

Nil location provided. Can’t build URI.
『提供された場所はありません。 URIを構築できません。』と怒られました:japanese_ogre:

# SQLで確認
![スクリーンショット 2021-09-03 22.37.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1572216/af0a406e-d70f-9685-f4cd-0ceab317000a.png)

今回、怒られたproduct.image_idを確認したらnilであった

# 解決方法

当該のviewページを確認したら、nilの場合の条件をつけていませんでした…

元記事を表示

[ransack]複雑な検索機能の実装

# はじめに
本記事では、`ransack`を用いた複雑な検索機能について記述します。
以下の画像のようなものを作成します。

![ransack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1768158/071b4cfd-7b98-132e-e6d6-4094c3ad98f6.png)

・「名前など」のところには、店名やメニュー名などがキーワードで検索できるようにしました。
・「辛さ(からさ)」では、ActiveHashとしているものとなっています。
・「close」は関係ないので、無視です。

# コード
該当箇所記載します。
関係ないところは、`省略`します。

## コントローラー
`@q`や`@p`など記載方法は分かれますが、`[:q]`もあるので、
`@q`に統一しました。

`検索パラメーター`(検索する際に入力した内容)のキーを、
`:q`としており、`queryのイニシャル`のことです。

query=質問(by Google先生)

記述し終わったら`binding.pry`し

元記事を表示

【Rails】ActiveRecord::PendingMigrationError (Migrations are pending. To resolve this issue, run:rails db:migrate RAILS_ENV=development):の対処法

症状

gitからアプリを新しいPCにpullして、Railsサーバーを起動してフロント側から動かそうとしたところ下記のエラーメッセージが表示されました。
翻訳すると、「移行は保留中です。この問題を解決するには、次のコマンドを実行します。rails db:migrate RAILS_ENV = development」になりました。

“`terminal:error
ActiveRecord::PendingMigrationError (

Migrations are pending. To resolve this issue, run:

rails db:migrate RAILS_ENV=development

):

activerecord (6.0.4.1) lib/active_record/migration.rb:586:in `check_pending!’
activerecord (6.0.4.1) lib/active_record/migration.rb:564:in `call’
actionpack (6

元記事を表示

rails tutorial5章進めた時の覚書

##第5章では何をするの?
– アプリにBootstrapむみこんで、スタイルをカスタムするよ
– これまで作成したへのリンクを追加するよ
– リンク追加の中で、パーシャル、Railsのルーティング、Asset Pipelineについて学ぶよ
– Sassの紹介もあるよ
– 最後にユーザーログインへの1歩も踏み出すよ

##リンクの生成 `link_to`
リンクの生成には、Railsヘルパーの`link_to`を使う
第一引数はリンクテキスト、第2引数はURL、第3引数はオプションハッシュ※必須ではない

“`erb
<%= link_to "sample app", '#', id: "logo" %>

  • <%= link_to "リンクテキスト", 'URL' %>
  • <%= link_to "Help", 'help' %>
  • <%= link_to "Log in", '#' %>
  • “`

    ###image_tagヘルパー
    引数として画像ファイルのパスと任意のオプションハッシュをとる
    シンボルを使ってalt属性やwi

    元記事を表示

    Rails × Vue.jsでvideoタグが機能しない。問題を解決できなかった。

    バックエンドがrailsでフロントをvueで記述しています。
    vueでビューを書いてるときに 動画を表示したいと思い、

    このように書きました
    videoタグというものがhtmlにはあるらしく、htmlで使えるものはvueでも使えるだろう。っといった感じです。
    srcの指定パスも間違ってない。

    だけど表示されない。
    色々調べてくと、https://teratail.com/questions/323372
    こういった解決方法があるらしい。
    どうやら動画をmp4に変換するときに色々な圧縮方法があるらしいが、特定の圧縮方法で生成されたmp4じゃないと行けないらしいので、

    https://convertio.co/ja/download/26774974af37d49cd96e3d7ea334f2e6fa2716/

    ![スクリーンショット 2021-09-03 14.32.27.png](https://qiita-image-store.s3.ap-northeast-1.amaz

    元記事を表示

    heroku 関連のコマンド集 &Error対応編

    herokuに新しいアプリケーションを作る

    “`
    heroku create
    “`

    アセットプリコンパイルする

    “`
    rails assets:precompile RAILS_ENV=production
    “`

    GemfileのRubyのバージョンをコメントアウトする

    “`
    source ‘https://rubygems.org’
    git_source(:github) { |repo| “https://github.com/#{repo}.git” }
    # ruby ‘2.6.5’

    $ bundle install
    “`

    コミットする

    “`
    ~/workspace/heroku_test_app (master) $ git add -A
    ~/workspace/heroku_test_app (master) $ git commit -m “init”
    “`

    Heroku buildpackを追加する

    “`
    $ heroku buildpacks:set heroku/ruby
    $ heroku buildpacks:add

    元記事を表示

    【Rails】Your Ruby version is 3.0.2, but your Gemfile specified 2.7.2の対処法

    症状

    Gitから新しいPCにプロジェクトをpullした後、railsサーバーを起動しようとしたところ、下記のエラーが表示されてしまいました。
    バージョンが違うと怒られているようです。

    “`terminal:error
    Your Ruby version is 3.0.2, but your Gemfile specified 2.7.2
    “`

    Gemfileに記述されているバージョンを確認したところ、下記でした。

    “`ruby:Gemfile.rb
    ruby ‘2.7.2’
    “`

    現在インストールしているバージョンを確認したところ、下記でした。
    エラーメッセージ通りでした。

    “`terminal:rubyバージョン
    ruby -v
    ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x64-mingw32]
    “`

    解決策

    Gemfileに書かれているバージョンを現在のバージョンに変更し、bundle updateをすることで解決しました。
    雑な方法ではありますが、Gemfileのバ

    元記事を表示

    【Rails】ActiveHashでcollection_selectしたのにプルダウンが表示されないエラー

    この記事ではRails 6.0.0を使用しております。

    当方、プログラミング初学者です。
    Ruby on Railsにおいて、ActiveHashの学習中に発生したエラーについて
    備忘録として残したいと思います。

    結論から言うと、単なるスペルミスが原因のエラーでしたが、
    エラー表示がパッとでてこなかった場合の、エラーの原因を探す1つの方法を記します。

    ActiveHashの学習のために、簡易的な記事投稿アプリを作成しております。
    記事の”ジャンル”をActiveHashで表示させるようにします。
    ActiveHashの導入方法などは、他の記事を参照してもらうとして、
    gem導入後、下記のようにモデル、コントローラー、ビューを作成しました。

    “`app/models/genre.rb
    class Genre < ActiveHash::Base self.date = [ { id: 1, name: '--' }, { id: 2, name: '経済' }, { id: 3, name: '政治' }, { id: 4, name: '地

    元記事を表示

    【Rails】StrongParameterの使用は必須ですか?

    # 概要
    StrongParameterはrails4から導入されたマスアサインメントを防ぐために導入された仕組みですが、使用が前提になっていると思っている方がいるようですが実際には必須ではありません。例えば、以下のようにStrongParameterからHashにして入力しても使うことができます。なぜこのように動作するかについてrailsのソースコードを見ながら説明します。

    “`ruby
    class Dog < ActiveRecord end params = ActionController::Parameters.new(name: 'tama', status:"sleepy") // new with strong parameter Dog.new(params.permit(:name, :status)) // new without strong parameter (hash) Dog.new(name: params[:name], status: params[:status]) // new without strong parameter (h

    元記事を表示

    Rails × Vue.jsでカルーセルを実装

    https://ssense.github.io/vue-carousel/
    カルーセルとはこんな感じ。

    これを実装していく。
    トップページのログインページにこれを表示させたいので、

    #自作vueコンポーネントをerbに表示させる

    “`erb

    <%= image_tag 'coffee_gif.gif' ,class: "coffee-gif"%>

    Von Voyage!

    Coffee Passportとはあなたが出会ったコーヒーの記録を共有できるサービスです

    【Rails】エラーメッセージ日本語化(メモ)

    # 目標
    ###エラーメッセージ日本語化

    この英語のメッセージを日本語に変える。
    ![スクリーンショット 2021-09-03 4.42.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1927584/5570947e-a0f5-2536-4f55-d7176c65849a.png)

    #実装
    まず`gemfile`に`rails-i18n`を記述してインストールする。

    “`ruby:Gemfile
    gem ‘rails-i18n’
    “`

    `bundle install`します。

    “`ruby:ターミナル
    $ bundle install
    “`

    `config/application.rb`ファイルに`config.i18n.default_locale = :jack_o_lantern:`を記述します。

    “`ruby:config/application.rb
    config.i18n.default_locale = :jack_o_lantern:
    “`

    ローカル

    元記事を表示

    [Rails]0から新規アプリケーションの作成

    ##初めに

    ####記事の対象者
    ・Macユーザ
    ・Railsでアプリケーションを一度も作ったことない人

    ####環境
    ・Macbook Air (Retina, 13-inch,2019)
    ・プロセッサ 1.6GHz デュアルコアIntel Core i5
    ・メモリ 8GB 2133 Mhz LPDDR3
    ・MacOS Big Sur バージョン 11.5.2

    ####新規作成までの道のり
    (1)Ruby用の環境構築
    (2)Railsのインストール
    (3)Railsのアプリケーションの作成

    ##Ruby用の環境構築
    (1)下記のリンクからHomebrewの公式サイトへ移動し、Install Homebrewの下にあるコマンドをコピーする。(https://brew.sh/)
    ![homebrew公式ページ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1102030/d0cc165b-75da-7df9-70f4-2e05a100e6db.png)

    ーターミナルを起動してさっきコピーした

    元記事を表示

    Nginx+unicornをherokuで使う方法

    ##Nginxサーバーとは##
    Nginxとは処理速度が速く、高負荷に比較的強いWEBサーバーのことです。
    ローカル環境ではデフォルトでpumaという名前のWebサーバーが使われており、railsサーバ起動時のログでpumaが使われています。
    この記事ではアプリケーションサーバー(Nginx)を設定する方法をお伝えしたいと思います。

    ##Nginxサーバーをセッティングする##
    unicornのインストール
    unicornについては下記サイトを参考にして下さい
    https://www.autovice.jp/articles/146

    まずはGemをインストール
    Gemfile

    “`
    gem ‘unicorn’
    gem ‘unicorn-rails’
    “`

    gemfileの書き込みが終わったら

    “`
    $ bundle install
    “`
    あらゆる言語でのアプリケーション開発を可能にする Heroku buildpackを実行
    Nginxをインストール

    “`
    $ heroku buildpacks:add heroku-community/nginx
    “`
    アプリ

    元記事を表示

    [Ajax]いいね機能を非同期にした

    # はじめに
    本記事では、非同期通信についてを記述します。
    本日実装しました。

    ## 前提
    いいね機能は同期通信で実装しています。

    また、オリジナルアプリ開発途中で不要なコードが多いので、
    `省略は多め`ですが、該当箇所は記載します。

    # いいね機能
    ### ビュー
    いいねを表示しているビュー`index.html.erb`

    `

    元記事を表示

    Rails ルーティングのrootについて

    #ルーティングとは
    ルーティングはwebサービスで言うとこのURLです。
    ルーティングは***routes.rbに記載***できます。
    ここで***どう処理してどう動くかを記載***します。

    下の参考資料を参考に説明していきます。

    #ルーティングの種類

    主に代表的なものです。他にもあるので調べてみてください。

    1 HTTPレスポンス 
    GET POST PUT PATCH DElETEなど

    2 root
     今回はrootをメインで説明していきます。

    ❗️注意点
    ***同じ条件(HTTPリクエストとURL)のルーティングがあった場合***
    ***上の条件を優先的に処理をします。***

    #ルーティングのroot

    ⚫︎rootとは

    ・特定のコントローラー内アクションへ割り当てる。
    アクションはindex show create update edit new destroy

    ・***アプリを実行するときの軸となる場所でrootで指定したところを
    URLの中心として開発していきます。***

    ex

    “`routes.rb
    root to: “home#index”

    元記事を表示

    【Rails】 Cannot assign to read only property ‘exports’ 【webpacker】

    # 問題
    RailsでとあるNodeモジュールを入れたらブラウザ上で
    >Cannot assign to read only property ‘exports’

    っていうエラーが出た。調べると”module.exportsとimportを同時に使うとエラーになるぞ”という情報が出てくるのだが、別にそういうわけではない。

    # 解決策
    色々調べてるとこんな情報が出てきた。

    > [I suspect @rails/webpacker v6 (not yet released) will fix this issue, because it drops the “nodeModules” loader completely. See changelog](https://github.com/apostrophecms/sanitize-html/issues/420)

    実際にやってみたところ確かに出なくなった。

    # 結論
    原因はよくわからないがnodeModulesローダーがnode_moduls/以下をトランスパイルしてるせいでたまに出るエラーらしい。上の通りWebpacker

    元記事を表示

    OTHERカテゴリの最新記事