Rails関連のことを調べてみた2022年10月17日

Rails関連のことを調べてみた2022年10月17日
目次

railsのedit画面から確認(confirm)画面を挟んでupdateしようとしてエラーにハマった話

>どうもaono1234と申します。記事がいいなと思ったらtwitterのフォローもお待ちしております‼

## 1. エラー状況
アプリ制作中にedit画面からconfirmアクションに遷移したら`couldn’t find Feed with ‘id’=confirm`というエラーが発生してしまいました。?
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534058/dfcdecb2-a8ff-b805-0a1c-bbe9062ef641.png)

new画面からconfirmアクションに遷移するときはこのようなエラーは発生せず遷移できたのですが…?

まず、不可解な点はidの中に通常、番号が入るところが、cofirmという文字列が入ってしまっている点です。
このとっかかりから原因を突き止めることができました。

`コード`と`confirmにパラメータ渡すときのlog`を以下に載せておきますので、皆さんも考

元記事を表示

【超簡単】Rails 日ごとに投稿をまとめ詳細ページに表示する

# はじめに
日ごとに投稿を1つのリンクにまとめ、その遷移先にその日の投稿がまとまったページを作成する方法を伝授します!
コピペだけで実装できます!
(※実装しているものと若干合わせる必要はあると思います?)

## コントローラー

“`ruby:posts_controller.rb

class TweetsController < ApplicationController def index @tweet = Tweet.new @tweets = Tweet.group("date(created_at)") end def create tweet = Tweet.new(tweet_params) if tweet.save redirect_to :action => “index”
else
redirect_to :action => “index”
end
end

def show
@date = params[:date]
@tweets = T

元記事を表示

Railsのデータベースコマンドこれさえ見れば問題なし!

## 概要
Railsアプリでデータベースをmigrateする際の有用なコマンドをこの記事にまとめる。

## migrateコマンドまとめ
### ファイル作成コマンド
– マイグレーションファイル作成
`rails g migration クラス名`
“`
$ rails g migration CreateUsers
Running via Spring preloader in process 310
invoke active_record
create db/migrate/20220913055401_create_users.rb
“`

– モデルファイル作成
`rails g model モデル名`
“`
$ rails g migration User
Running via Spring preloader in process 315
invoke active_record
identical db/migrate/20220913055401_create_users.rb

元記事を表示

【Rails】onclick属性を指定してもJSの関数が使えない

# やりたいこと
ビューファイルに直接書いたJavaScriptをapp/javascript/packs/application.jsファイルに移行したい。

“`slim:app/views/**s/**.html.slim
javascript:
function hoge(target) {
〜処理〜
}

input type=”button” value=”hoge” onclick=”hoge(this)”
“`

# 上手くいかない
JavaScript部分をそのまま切り取ってapp/javascript/packs/application.jsファイルに移行すると今まで動いていたのに、動かなくなってしまう。

# [teratail](https://teratail.com/questions/343393)で解決法を発見
> 記述したjavascriptが関数でラッピングされてる可能性があるので、HTML側から呼び出せないのかもしれません。
関数をonclickで呼び出したいならglobal領域に突っ込んであげると上手くいくかもしれません。

元記事を表示

【Rails】deviseの導入とログイン機構作成時のメモ

# deviseの導入手順
Gemfileに以下を記述。devi**c**eではなく、devi**s**eなのでご注意を。
“`ruby:Gemfile
gem ‘devise’
“`
ターミナルで以下を実行し、gemのインストール。
“`
bundle install
“`
以下のコマンドを実行し、設定ファイルを作成。
“`
$ rails g devise:install
“`
以下のコマンドを実行しモデルの作成とマイグレート
“`
$ rails g devise user

$ rake db:migrate
“`

ログイン機構が表示されるかどうかを確認するため、以下のようなviewをapp/views配下に作成してみる。

“`erb:home/show

HOME

<% if user_signed_in? %>

メールアドレス: <%= current_user.email %>

<%= link_to "ログアウト", destroy_user_session_path, method: :dele

元記事を表示

単体テストコード(userモデル)記述の流れ

# はじめに
単体テストコードを実行する流れをまとめる

# 単体テストコード実行流れ
## 1.テストコードを記載するファイルを作成する。
% rails g rspec:model user
(Userモデル用のテストファイルを作成できる。)

「create spec/models/user_spec.rb」と記載が出れば問題ない。

<補足>
RSpecでモデル、ビュー、コントローラーのテストを行うためには、rails_helper.rbというファイルを読み込む必要があるため、
上記で作成したテストファイルの1行目にはrequire ‘rails_helper’と記述されている。

## 2.テストコードを記載

#userモデルの単体テストコードの一例(spec/models/user_spec.rb内)

require ‘rails_helper’

RSpec.describe User, type: :model do
before do
@

元記事を表示

[Rails]複数キーワードで動的にLIKE句のOR検索をする方法

今回は実務で使う機会があったちょっとしたことについての記事です

## やりたいこと

“`ruby
# keywords = [“hoge”, “fuga”, “piyo”]
Post.where(“title LIKE ?”, “%hoge%”)
.or(Post.where(“title LIKE ?”, “%fuga%”))
.or(Post.where(“title LIKE ?”, “%piyo%”))
“`

上記のように複数キーワードを渡したときに、いずれかのキーワードを含むPostを検索したい。

## やり方

先に結論を書きますと、以下のようなScopeを作って対応しました
“`ruby
class Post < ApplicationRecord scope :by_keywords, lambda { |keywords| keywords.map { |keyword| where("content LIKE ?", "%#{keyword}%") }.reduce(:or) } end keywords = ["ho

元記事を表示

[rails初心者]複数権限でのログインを使ったレビューサイトの作成(応用)

初めに

ポートフォリオテーマとして業者のレビューサイトを作成しています。
以下の画像のようなレビューサイトを作っていこうと思います。

![top画面1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822721/75cffe6d-1714-fc3c-9ad8-068addf06205.png)

※自分用でまとめてますので、分かり辛かったらすいません。
また理解不足・誤りがあったらコメント頂けますと幸いです。m(__)m<ヨロシクオネガイシマス

前提条件

①今回の記事では応用機能のみ※平均値算出や平均点が大きい順に並び替えについて紹介いたします
②今回の記事では基本機能は実装済みとして進めます。詳しくは下記URLより参考にしてください

[[rails初心者]複数権限でのログインを使ったレビューサイトの作成(基本)](https://qiita.com/about10/items/0e376c84022f2ac238d0)

元記事を表示

Fly.ioでデプロイする手順(Window)

# STEP1:Gitを利用できるようにしよう

Gitを利用するためにユーザー名とemailを登録する必要があります。
以下のコマンドの”名前”と”メールアドレス”の部分を変更して、実行してください!
名前は自分の氏名のローマ字で大丈夫です。

“`ruby:ターミナル
git config –global user.name “名前”
“`

“`ruby:ターミナル
git config –global user.email “メールアドレス”
“`

# STEP2:リリースするための準備を仕込もう
“`ruby:ターミナル
cd desktop
cd (自分のアプリのフォルダ名)
“`
## Gemfileの編集
まず、「gem ‘sqlite3’, ‘~> 1.4’」と書いてある行(9行目付近にあります)を
コメントアウトしましょう。
(これらは、自分のパソコンの中のrails app内で用いるデータベースのgemです。) 

#変更前
![8-2-1.png](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

Render.comでRailsアプリの本番環境を作成する方法をどこよりも優しく伝える!

# 目的
Herokuの有料化により他のPaasを探している方もいるのではないでしょうか?
本記事は [Render.com](https://render.com/) というサービスを本番環境に使用する方向けの記事です。

前記事からの続編となっていますので、

+ 本番環境だけPostgreSQLにする
+ Railsアプリの環境変数を設定する

という方法を知りたい方は下の記事を御覧ください。

https://qiita.com/ysk91_engineer/items/904a5bc881eda8a10df8

:::note
現在Webエンジニアを目指して勉強中の、現場未経験の僕でもできた工程です。
ハンズオンでゆっくりやっていきましょう。
:::

# 準備

## scaffoldでささっとUserモデルを作る
本番環境でdbが動いているかを確認するために、簡単なMVC構造を作成しましょう。
ターミナルにて

“`terminal
$ rails g scaffold User name:string
$ rails db:migrate
“`
を実行し、Userモ

元記事を表示

【解決済】CORS設定でOPTIONSリクエストとヘッダが取得できない

実装中に対応した内容を備忘録として投稿します。

## 発生した問題
フロントエンド(Nuxt.js)から、バックエンド(Rails)に対して、APIリクエストを投げるとCORSエラーが発生。

“`
Access to XMLHttpRequest at ‘http://localhost:3000/users/1’ from origin ‘http://localhost:8080’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
“`

## 原因
– ブラウザ側のセキュリティが強化されていて、意図しない挙動を防ぐために実装されている。
– もし仮に、ハッキングされるなどすると、
– フロントエンドとバックエンドでサーバーやドメインが別れている場合に、悪意のあるドメインにすり替えるなどができてしまう。
– 会員制サイトでログインするときに、ログインIDやパスワードを盗むことができてしまう

元記事を表示

今まで知らなかった開発で使用するメソッドをまとめてみた!

## なぜ記事を書こうと思ったか
Railsアプリの開発をする際に適切なメソッドを調べる時がある為、今まで知らなかった開発で使用するメソッドを中心にこの記事にまとめようと思います。

## railsメソッド一覧
### Regexpクラス

– escapeメソッド
メタ文字をエスケープした結果を返す。

“`
pattern = Regexp.escape(‘1+2=3,2*3=6’)
p pattern
# ‘1//+2=3,2//*3=6’
“`

### Stringクラス
– subメソッド
文字列中で pattern にマッチした最初の部分を文字列 replace で置き換えた文字列を生成して返す。

“`
greeting = “I am name. My favorite food is meet.”
pattern = { “name” => “James”, “meet” => “beef” }
replaced = article.sub(/name|meet/, pattern)

p replaced # “I am James. M

元記事を表示

【備忘録】【Rails】before_actionとは

11月からRailsを実務で使うことが決まったので、これから学習したことを備忘録に残していきます。

今日は【before_action】について。

▼ 参考にさせていただいた記事
[pikawaka 【Rails】 before_actionの使い方とオプションについて](https://pikawaka.com/rails/before_action)

# before_actionとは
コントローラの各アクションが実行される前に、何らかの処理を行いたい時に使用するもの。
フィルタの一つ。フィルタとは、コントローラにあるアクションの直前や直後、または直前と直後の両方に実行されるメソッドのことをいい、Railsには様々なフィルタが用意されている。

“`rails:before_actionの使用例
class UsersController < ApplicationController before_action :メソッド名 end ``` これをコントローラーファイルの上部に記述しておくことで、コントローラーのアクションが動く前にメソッドが実行されて、そのあとでア

元記事を表示

Deviseのエラーメッセージを日本語化する

# Devise日本語化の設定
application.rbを編集して、言語設定を変更する

下記の様にconfig/application.rbの中に**config.i18n.default_locale = :ja**を追記する。

“`ruby:config/application.rb
module ——-
class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. config.load_defaults 6.0 # 日本語の言語設定 config.i18n.default_locale = :ja # Settings in config/environments/* take precedence over those specified here. # Application configuration can go into files

元記事を表示

ビューテンプレートについて

### パスとURLヘルパーメソッド
ルーティングを表示する際のPrefixの値+_pathなどとするとルーティングで定義したパスが取得可能になります。

以下例になります。

次のようなルーティングを表示した場合のprefix欄にあたる
**publisher**や**edit_profile**の名前を使ってURLやパスを生成できます。
“`
Prefix Verd URI Pattern Controller#Action

publisher GET /publishers/:id(.:format) publisher#show

edit_profile GET /profile/edit(.:format) profiles#edit
“`

上記のPrefix値に_pathを付けると
ドメインやポートなどを除いた/から始まるパス部分を、
_urlとするとドメインなどを含んだ安全なURLを返します。

また、publsiherのようなパスの情報に「:id」といった変動

元記事を表示

インデントを減らすコマンド

# はじめに
余計につけてしまったインデントを減らす方法を記録します。

## 対処法
shift + tab キーでインデントを減らすことができます。

元記事を表示

【Rails】ルーティング【備忘録】

下記のようにlogout_pathのような[ルート名]_pathのように記述し、routes.rbにルートを記述するとlogout.hrml.erbを呼び出すことができる。
ルート名の確認方法は下記のコマンドrails routesで確認できる。
ルート名は,as:’ルート名’でエイリアスを設定できるが、デフォルトでは[コントローラ名]\_[アクション名]_pathのようになる。
“`bash
$rails routes | grep ‘home’
#ルート名        URL コントローラ名#アクション名
root GET / home#top
home_top GET /home/top(.:format) home#top
logout GET /home/logout(.:format) home#logout
“`
“`routes.rb
Rails.application.routes.dra

元記事を表示

HTMLの基礎知識(コメント機能で動画を投稿)

みなさんこんにちは!!
今回はYouTude投稿とコメント機能の応用した機能になります!!

**STEP1:モデルを作成しよう!**

“`ruby:ターミナル
rails g model Youtubecomment content:string user:references register:references
rails generate migration AddYoutubeUrlToRegisters youtube_url:string
rails db:migrate
“`

**Step4: helperにメソッドの定義**
“`ruby:helpers/registersHelper
module RegistersHelper
def find_youtube_url(youtube_url)
if youtube_url[0..16] == “https://youtu.be/”
return youtube_url[17..27]
# “https://youtu.be/WGiUk8VakxQ” 11桁の

元記事を表示

成果物を作る為の計画

## 成果物を作る為の下準備

### 自問自答

– Q, どの様な成果物を作りたいのか?
 
A, 自分の経歴や自己紹介、現状のスキルなどを
  テキストや動画を使って説明出来るアプリの作成したい

– Q, どの様な言語で?なぜその言語なのか?

A,   言語はRubyでフレームワークはRubyと相性の良いRuby on Railsを
    使おうと思います.プログラミングスクールの課題でRubyを扱っていて
   多少の知識はあるのでRubyをある程度マスターしてから他の言語も学習
   していきたいと思っています。
  
– Q, なぜRubyで成果物を作る必要があるのか?

A,  プログラミングスクールではRubyの基礎の知識とどの様に進めていけば
  作りたいものが作れるかのプロセスを学んだので今回は自分で全て考えてタスクを
  言語化+細分化し作成することでRubyの言語を理解出来ている事を証明し転職活動時
  のポートフォリオとして使いたい

– Q,どの様な順序で進めていけば効率良く作業できるか?

 

元記事を表示

【解決済】rails sが起動しなくなった

`rails s`が動かない現象に遭遇したので、備忘録として投稿します。

## 発生した問題
下記エラーにより、`rails s`が起動しなくなった。
“`
% rails s
=> Booting Puma
=> Rails 6.1.5 application starting in development
=> Run `bin/rails server –help` for more startup options
Exiting
bin/rails:7: warning: already initialized constant APP_PATH
/Users/xxxx/workspace/app/bin/rails:7: warning: previous definition of APP_PATH was here
The most common rails commands are:
generate Generate new code (short-cut alias: “g”)
console Start the Rails conso

元記事を表示

OTHERカテゴリの最新記事