Rails関連のことを調べてみた

Rails関連のことを調べてみた

【Rails】No route matchesが起きた不思議な理由

Railsでプロフィール画面を作成、実装したのだが、エラーが起きた。
いじっているうちにエラーの出方が姿を変え、最終的に「えっここ?」というところを直したら解決したので記録しておく。

### プロフィールへのリンクをクリックしても「boardコントローラでprofileのidが見つからない」とエラーが出た。
え、プロフィールの画面へのリンクだからprofileコントローラかuserコントローラしか関係ないし、idを表示させない方法でルーティングを組んでいるので、profile_pathのidがboardコントローラでマッチしないというエラーは、なぜなんだろう・・。と理由が分かりませんでした。

ビューファイルの周辺をいじったりすると逆におかしくなり別のエラーが出たりして直していると、今度は別のエラーが出ました。

### 「No route matches」
「profile_path」は使えない、というエラーが出ましたが、ルーティングの設定はされており、ターミナルで確認しても使えるはず。
またしてもビューファイルの今度は関係なさそうなリンクを直したりしているとまた別のエラーが出てし

元記事を表示

Railsで動的に営業時間入力フォームを表示させる方法(ストロングパラメータに注意!)

Railsアプリケーションにおいて、`テーブルA(hospitals)`と`テーブルB(business_days)`間の関係を管理するために`テーブルAB(hospital_business_days)`中間テーブルを設定し、さらにそれに`テーブルC(hospital_business_hours)`を1対多で関連付ける場合、複雑なフォームの扱いが必要になることがあります。本記事では、このような構成を`accepts_nested_attributes_for`を用いて実装し、チェックボックスで選択された曜日に応じて営業時間の入力フォームを動的に表示する方法を解説します。

## 実装の概要

実装の核となるのは、次の4つの部分です。
※実際に私が使用した記述を引用しているのでテーブル名等は各自必要なものに読み替えてください。

1. **モデルの関連付け**:
`hospital`と`business_day`の間に中間テーブル`hospital_business_day`を設定し、`hospital_business_day`から`hospital_business_hou

元記事を表示

Railsフォームで`fields_for`を使用せずにネストされた属性を扱う方法

# Railsフォームで`fields_for`を使用せずにネストされた属性を扱う方法

Railsの`fields_for`メソッドは、フォーム内でネストされた属性を簡単に扱うための便利なヘルパーです。しかし、特定の状況や要件により`fields_for`を使えない場合があります。この記事では、`fields_for`を使用せずにネストされた属性をフォームで扱う方法を紹介します。

## 前提条件
`hospitalsテーブル`、`business_daysテーブル`、`hospital_business_daysテーブル`、`hospital_business_hoursテーブル`がある。
`hospitalsテーブル`と`business_daysテーブル`は`hospital_business_daysテーブル`を中間テーブルとして多対多。`hospital_business_daysテーブル`と`hospital_business_hoursテーブル`は1対多の関係である。

## 基本的な考え方

`fields_for`を使用せずにネストされた属性を扱う主な方法は、フォー

元記事を表示

【個人開発】断捨離アプリ「steteco」を未経験者が開発しました(Rails7)

## はじめに
初めまして。この度、初めて断捨離アプリである個人アプリ「steteco」をリリースいたしました。
まだまだプログラミング学習中の未経験エンジニアであり、技術的な内容などは誤りを含む可能性があります。
そのため、おかしな記述などがあればコメント等で教えていただけたら幸いです!
## stetecoについて
今回のアプリは、不用品の整理をしている際に「もったいないから」「フリマアプリで売れるかもしれないから」と考えてしまい、捨てる決断ができない優柔不断な方向けの、断捨離を後押しするサービスです。

私は、部屋の整理をして不用品が出るたびに、「フリマアプリで売れるかも」と思い、結局物置部屋のものが増えるだけという悪循環を繰り返していました。
同様に優柔不断な性格で整理ができない人が多いと気づき、断捨離を後押ししてくれるツールがあれば便利なのではと考え、「steteco」を作成しました。
– 作成期間: 約3ヶ月
– URL:https://steteco-dansyari.com/
– GitHub:https://github.com/ayaikg/sort_unwante

元記事を表示

【GraphQL Ruby】値が空文字の場合に null が返るように

# 結論

“`ruby
class NilIfEmpty < GraphQL::Schema::FieldExtension def after_resolve(value:, **_rest) value.presence end end ``` ```ruby class Types::BaseField < GraphQL::Schema::Field def initialize(*args, **kwargs, &block) super # NOTE: unwrap を使うと、String! のような null: false のフィールドでも if の中を通せる if type.unwrap == GraphQL::Types::String extension(NilIfEmpty) end end end ``` # 背景など Rails × GraphQL Ruby で GraphQL サーバーを実装していて、非必須な String 型のデータのためにDBレベルでカラムに空文字のデフォル

元記事を表示

【Rails】ジャンル検索機能(ECサイト)

今回はECサイトのジャンル検索機能の実装を解説します!
完成形はこちらです。

![スクリーンショット 2024-02-19 222738.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3677302/04d3071b-72e3-bd1b-ac8e-469f6b2a37d6.png)

## 環境
AWS Cloud9
Ruby on Rail 6系
Bootstrap Ver.4
kaminari導入済み
itemコントローラー作成済み
モデルのアソシエーション記入済み(ItemモデルとGenreモデル)

## 方法
### コントローラー作成・記述
“`terminal
$ rails g controller genres show
“`
今回はshowページのみ作るので、この時点で作成しておきます。
次にコントローラーに記述を加えていきます。
“`ruby:genres_controller.rb
class GenresController < ApplicationControlle

元記事を表示

authorizeメソッドについて

## authorizeメソッドとは

authorizeメソッドとは、`Pundit`というgemを導入することにより、Rubyで使用できるメソッドのこと。

### 役割
引数のオブジェクトの認可を確認するメソッドとして、よく使用される。

例えば、下記の`authorize(current_site)`の場合、
authorizeメソッドの引数である`(current_site)`が、認可されているかどうかを確認するメソッドとして、`authorize`メソッドが使用されている。

(`current_site`サイトにログインしているユーザーがadminかそれ以外かの認可の確認を行っている。)

#### authorizeメソッドの呼び出し元であるコントローラー
“`Ruby:app/controllers/admin/site/attachments_controller.rb
class Admin::Site::AttachmentsController < ApplicationController def destroy authorize(curre

元記事を表示

【Rails】画像投稿機能を実装する

Gem carrierwave(Webアプリケーションにファイルアップロード機能を提供するGem)を使用する。

## アップローダーとは
・アップローダーとはクラスオブジェクトである。
・アップローダーから生成されたオブジェクトを使って、ファイル名やファイルの保存先を取得できる。
・アップローダーにはファイルアップロードに関する設定を書ける

## 実装の流れ
1. アップローダーを作成
2. アップローダーをモデルで使用するように宣言
3. アップロードの設定を各ファイルで行う

## 達成したいこと
▪️掲示板に画像を設定できること
▪️サムネイルと表示されたラベルをクリックすると、ファイル選択画面が表示されること
▪️掲示板入力フォームで画像のみが未入力で作成ボタンを押した場合でも、掲示板一覧画面にリダイレクトして「掲示板を作成しました」というフラッシュメッセージが表示されること
▪️carrierwaveで使うカラムはBoardモデルにboard_image という名前で追加
▪️画像ファイルを登録する際に
→・画像は必須項目に含めない
  ・アップロードできるファイルは

元記事を表示

Macで以前できなかった Ruby+Rails環境構築に再トライ

## 以前できなかったこと
### 1.  rbenvを利用してのruby version up
Ruby Version UpしたのにVersionが変わってない!
“`
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.arm64e-darwin23]
“`

この時は諦めてrbenvをアンインストールしてHomebrewからインストールしなおしました。universalと表示されているのは一度アンインストールしたのでMacデフォルトのRubyバージョンが表示されています。

### 2.  rbenvを使用してのrails install

Railsインストールしたのになんで???
“`
$ rails -v
Rails is not currently installed on this system. To get the latest version, simply type:

$ sudo gem install rails

You can then rerun your

元記事を表示

【Ruby on Rails】CRUD操作用ルーティングの自動設定の生成・利用方法【名前付きルーティング、resources、resource】

### 勉強前
・ルーティングの自動生成ってどうやったら何が生成される?
  resources?でなんかCRUD操作用のパスが追加される?
・ルーティング用ヘルパーがいっぱいあるように見えて整理がつかない…
  xxx_path?xxx_url?xxxには何が入る?

### 名前付きルーティング
#### routes.rbの記述
– 特定のパスへのリクエストを特定のcontrollerのメソッドに割り当てる
– controller(xxx_controller.rb)とメソッドを作成
– routes.rbにルーティング設定を記述
紐づけは命名規則によって行われる。

例)…/patients/{id} へのGETリクエストをルーティング
“`app/controllers/patienrs_controller.rb
def show
# リクエストに対する処理
end
“`

“`config/routes.
get ‘/patients/:id’, to: ‘patients#show’
get ‘/patients/:id’

元記事を表示

【Rails】SprocketsによってコンパイルされたCSSを文字列として取得する方法

Railsでは通常、layoutファイルで`stylesheet_link_tag`メソッドを使ってSprocketsによってコンパイルされたCSS(元々`app/assets/stylesheets/application.css`等に書いていたCSS)を参照します。

“`erb:app/views/layouts/application.html.erb




<%= stylesheet_link_tag "application" %>

“`

背景を説明すると長くなるので省略しますが、とある事情でこのコンパイルされたCSSを文字列として取得する必要が出てきました。(簡単にいうと、``でcssファイルにリンクするのではなく、HTMLに直接スタイルシートのコードを埋め込む必要があった)

いろいろ調べた結果、以下のようなコードで取得できることがわかりました。

“`ruby
Sprockets::Railtie
.b

元記事を表示

Redux-sagaを使ってReactからRubyで作成したAPIに接続する

# やりたいこと
– Redux-sagaを使ってReactからRubyで作成したAPIに接続する
– Redux、Redux-sagaの使い方については下記記事参照
[Reac初心者でも読めば必ずわかるReactのRedux講座 | アールエフェクト](https://reffect.co.jp/react/react-redux-for-beginner/)
[redux-sagaとは何なのか? – Qiita](https://qiita.com/souhei-etou/items/2dce0a1dc8f24e9c2668)
# 前提
– ruby: 2.7 + Rails: 6
– react: 16.8.6
# ファイル構成
“`
app
├── controller
│ └── forms_controller.rb
└── javascript
├── app
│ ├── containers
│ │ └── Form.js
│ └── redux
│ ├── actions

元記事を表示

【初心者必見】簡単!BootStrapとCSSで垢抜けたサイトを作る方法!

こんばんは!
BootStrapだとなんだかBootStrap感が出てしまう(?)と悩んでいる方、もしよかったらこちらの記事を参考にしていただけると幸いです。
最近ECサイトを作っていて、その際にBootStrapとCSSを多用してレイアウトやデザインを修正しているので、個人的に今後も使えるなと思ったデザインの実装方法をお伝えしようと思います!
Railsを使っていますが、紹介ではRails以外で使える書き方にしています。

# 環境
AWS Cloud9
Ruby on Rails 6系
Bootstrap Ver.4(実装方法は[こちら](https://qiita.com/gintaro0111/items/716035adcb8e097b244c))
CSS
Font Awesome導入済み

## ホバー時に色が変わるボタン
完成後はこちら。ホバー時に背景色と文字色が反転します!BootStrapを使うので、難しいCSSの記述はありません。ちなみにアイコンはFont Awesomeを使用していますが、これは導入後コピペですぐできるものなので、実装は割愛します。
通常時
![ス

元記事を表示

指定するディレクトリ階層下にファイルを追加する

adminというディレクトリ階層下にcontrollerを作成する方法

“`php:ターミナル
rails g controller admin::searches
“`

“`php:app/controllers/admin配下
app/controllers/admin/searches_controller.rb
“`

元記事を表示

cannot load such file — bootsnap/setup

# cannot load such file — bootsnap/setup

“`
gem ‘bootsnap’
“`

# 出典
https://qiita.com/Okame-chan/items/08d5d9d65e101735b1bc

# 感想
とりあえず残しておいて
勉強する

元記事を表示

railsでjava scriptやcssを使用するには?

Railsでjava scriptやCSSファイルを使用する場合、一般的には2つの方法があるそうです。(どっちを使えばいいの?と思いますが、初学者にはまだわかりません、、、)

## 1. CDNからの読み込み
外部のライブラリやフレームワークを使用する場合、そのファイルをCDNから直接読み込むことができます。これにより、アプリケーションのレスポンスタイムが改善され、ライブラリのバージョン管理や更新が簡素化されます。
※「CDN」はContent Delivery Networkの略で、**インターネット経由でファイルを配信する仕組み**のことです。

###  例 jQueryやBootstrapを読み込む場合
“`html


  
    sample
    
    
    
   

元記事を表示

Ruby シンボルとキーについて

## Rubyにおけるシンボルとキーについての関係性について

Railsでストロングパラメータの設定を行う際に、シンボルとキーの理解が整理できていないことに気がついたので、こちらでまとめておこうと思います。

“`ruby
def site_params
params.require(:site).permit(:name, :subtitle, :description, :favicon, :og_image, main_images: [] )
end
“`
私が気になった点は、`:subtitle`と`main_images: []`の書き方の違い(:の位置)です。

`:subtitle`
単一のデータを所有するカラムの記載の仕方。

`main_images: []`
複数のデータを所有するカラムの記載の仕方。
ストロングパラメータに追加する際は、**末尾に追加**する。
そうでないと、Railsの規約に従っていないらしく、エラーが出る。

今回の話題は、この`:subtitle`、`main_images:`の部分について。

### キーの種類

元記事を表示

プロを目指す人のためのRuby入門[改訂2版]を読んで

プロを目指す人のためのRuby入門[改訂2版]を読んでの感想

## 良かったところ

### 説明が丁寧
まず、本書のイントロダクションにも書いてあったのですが、まったくプログラムを書いたことのない完全なプログミング初心者には少し難易度が高い印象でした。
ですが、サンプルコードがたくさん書かれているのでわかりやすかったです。

### 基礎から応用まで
中級者〜上級者用ではあるのですが、基礎を理解できる章からそれを使った応用の章までと網羅されていました。

### 例題とリファクタリング作業
章ごとに例題があり、動いた後にどのようにリファクタリングできるかを説明してあります。シンプルでわかりやすい構文での書き方を学べます。

## 学んだこと

プログラマの三代美徳は「怠惰・短気・傲慢」

### 基本構文について
* メソッドの戻り値の指定にreturnは使わない。returnはメソッドを途中で脱出する際に使われることが多く最後に評価された式がメソッドの戻り値になる。
* エイリアスメソッドが多くある。
* メソッド定義も式になっている。メソッド名をシンボルとして返す。

###

元記事を表示

discardで論理削除する

# はじめに
先日、業務でdiscardを使用して論理削除の実装をしました。
discardは初めて使用したのですが、とても簡単に論理削除の実装ができたため、備忘録として記事にしたいと思います。

私自身、まだまだ未熟な経験の浅いエンジニアですので、誤った解釈をしている可能性もあります。もしそういった場合がありましたら、ぜひコメントでご指摘いただければ幸いです。

# 論理削除とは

論理削除は、データベースのレコードを物理的には削除せずに、削除されたかのように扱う方法です。
レコードに「削除された」という状態を示すマークやフラグを設定することによって、レコードはデータベースに残り続けますが、アプリケーションの動作上では「存在しない」または「アクセス不可能」な状態にできます。

# discard とは

discard は、Ruby on Rails で論理削除を簡単に実装するための Gem です。
discard では、論理削除に関連するカスタムロジックを書く必要がなくなり、一貫した方法でデータを扱うことができます。

# 環境設定

### Gem のインストール

Gemfi

元記事を表示

Rails Server が正常に終了しない場合の対処法

## 事象

`Rails Server` を使用している際、通常は `Ctrl + C` を使用して終了しますが、サーバーが正常に終了しない場合があります。再度 `bin/rails s` コマンドで `Rails Server` を起動しようとすると、以下のようなエラーが発生することがあります。

“`sh
% bin/rails s
=> Booting Puma
=> Rails 7.0.4.3 application starting in development
=> Run `bin/rails server –help` for more startup options
A server is already running. Check /path/to/your/project/tmp/pids/server.pid
Exiting
“`

こちらのエラーメッセージは `Rails Server` が既に実行中であることを示しており、正常に終了していない、或いは異常終了して `プ

元記事を表示

OTHERカテゴリの最新記事