- 0.1. 初めに
- 0.2. コントローラー
- 0.3. VIEW 検索結果表示画面
- 0.4. Sign up
- 0.5. 初めに
- 0.6. 環境変数を設定する
- 0.7. gemのインストール
- 0.8. .envファイル作成
- 0.8.1. [Ruby] AtCoder過去問 B – Cycle Hit
- 0.8.2. 引数を影響を与えずにメソッドをオーバーライドしたい時は … 記法を使う
- 0.8.3. #4 SinatraでActiveRecordを使わずに掲示板アプリを作ってみた
- 0.8.4. 【Rails】 N+1問題 (eager_loadとpreload)アプリで学べ
- 0.8.5. 【Rails/Ruby/Docker/LINE messagingAPI/Heroku】単語帳bot
- 0.8.6. 【Rails】Todoリスト カードの移動実装
- 0.8.7. Ruby問題のアウトプット
- 0.8.8. [Rails]ransackを使った検索機能
- 0.8.9. [Ruby on rails] ”undefined method `each’ for nil:NilClass”エラーが出た時の対処法
- 0.9. エラー画面
- 0.10. 解決方法
- 1. Blogs#new
[Ruby on rails]検索結果でもページネーション使う kaminari
初めに
過去の検索機能実装の記事はこちら。
https://qiita.com/ki_87/items/eb6d4e440195c3b3c5a2
ページネーション導入済みで、一覧画面では使用してましたが、
検索結果では使わず、全表示にしていました・・・。
なので、今回検索結果の表示画面でもページネーションを使用していきたいと思います。コントローラー
“`
class Users::SearchesController < ApplicationController def index users= User.search(params[:keyword]) @users=users.page(params[:page]).per(25) end end ``` これでほぼOKです!VIEW 検索結果表示画面
“`
<%= paginate @【Ruby on Rails】autofocus: trueを使って自動で焦点をあてる方法
#対象者
* 投稿フォームを作ろうとしている方
* クリックしなくても自動で入力待機状態を作りたい方#目的
* autofocus属性を使って、自動でカーソルをあわせられるようにする!
#実際の手順と実例
###1.autofocus属性とは??* autofocus:trueでページを読み込んだ後、クリックすることなく、カーソルが移動して入力待機状態を作るというメソッド(?)です。
###2.具体例
本の投稿をするアプリを例とします。
入力は下記の通り““app/views/devise/registrations/new.html.erb
Sign up
<%= form_with model: @user, url: user_registration_path, id: 'new_user', class: 'new_user', local: true do |f| %>
<%= f【初見】ActiveRecord::InvalidForeignKey を初学者なりに噛み砕いて備忘録を記述してみる。
# タイトルにもあるとおり始めてのエラーです(多分)
Mysql2::Error: Cannot delete or update a parent row: a foreign key constraint fails とありまして、何が原因になっていたかを備忘録として書き残そうと思います。#解決策から紹介します。
このエラーの解決は、モデルに追記した後に、データベースをリセットすることで、解決しました。
コードだけだと意味がわからない記述になっているの以下の説明も一緒に読んでください。“`Ruby
# model/study_time.rb
belongs_to :skill, optional: true #optional: true を追記# mdoel/skill.rb
has_many :study_time, foreign_key: :skill_id, dependent: :destroy #foreign_key: :skill_id, dependent: :destroy を追記
“`
# どういう仕組みで起こったのか。
作成しているア[Ruby on rails]グループ作成機能④ グループ管理者のグループ編集/グループ削除 外部キー制約のデータ削除
初めに
![スクリーンショット 2021-08-03 22.38.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/993e7291-1dbf-3631-afbb-96aa91cab457.png)
①②の記事でグループの作成、グループへの参加、退会機能を実装しました。
③ではグループ管理者の表示も行いました。しかし、グループの編集/削除機能をすっかり忘れていましたので、今回グループの編集機能をつけていきます。
:sunny:注意①②と③④で作ってるアプリが違います。
①②は本の投稿(bookモデル)サイトでの、グループ作成機能。
③④は記事の投稿(postモデル)サイトでの、グループ作成機能です。
①②と③④でGroupのカラムが若干違います。
グループ名(name)、
グループ紹介(introduction)
オーナーid(owner_id)は共通ですが、
①②では、t.string :image_idがあるのに対し、
③④では、image_idが無くインスタンス変数とローカル変数の違い
# はじめに
本記事は、インスタンス変数とローカル変数の違いをまとめたものです。
正確な理解ができていなかったため、アウトプットします。# 結論
いきなり結論ですが、
`スコープ`の違いです。スコープとは、
ある変数や関数などの名前を参照できる`範囲`のこと。### ローカル変数の範囲
ローカル変数は、極端に言いますと、
`定義した場所`でしか使えない。ということです。例えば、def~endで定義したのであれば、その場所でしか使えない。
という認識です。### インスタンス変数の範囲
インスタンス変数は、
`定義した場所以外でも使用可能`です。例えば、def~endで定義していない場所、
コントローラー内で定義したのであれば、`ビュー`でも使用できる。
という認識です。# 例文
コントローラーやビューなどを考慮せずに、
この文章内だけで考えた場合、
①と②、どちらが正しいだろうか。①
“`ruby
def update
@tweet = Tweet.find(params[:id])if @tweet.update(tweet_p
[Ruby on rails] グループ作成機能⑥ Action mailerの環境変数化 gem(dotenv-rails) /.env
環境変数を設定する
グループ作成機能⑤でグループメンバーにメールを送信する機能を実装しました。
gmailのアドレス、パスワードを直打ちしてるので、セキュリティ的にあまりよろしくありません。
そこで使うのが環境変数です。なんか大変そう・・・:frowning2:と思ってたのですが、すぐ出来ます!!!
もうメールの機能は出来上がってる前提です。
メール機能の実装については⑤の記事をご確認ください。https://qiita.com/ki_87/items/67f8965e8de17e95ac1c
gemのインストール
“`perl:Gemfile
# 環境変数化のためのgem
gem ‘dotenv-rails
“`そしたら“`bundle install“`で取り込みます。
.envファイル作成
Gemfileなどが置いてあるルートディレクトリに .env というファイルを作成します。
以下のような感じになるはずです!![スクリーンショット 2021-08-03 21.17.30.
[Ruby] AtCoder過去問 B – Cycle Hit
##はじめに
RubyでAtCoderのB問題解いてみました。
私のレベル的にB問題のレベルが解いてて一番気持ちいいです。C問題にもなれていかなくては。
それではよろしくお願いします。問題はこちらからご確認ください↓
https://atcoder.jp/contests/abc211/tasks/abc211_b
##B- Cycle Hit
まずは入力の受け取り方ですが、配列に全ての入力を格納していきます。
空の配列を用意して、四つの入力を受け取るので繰り返し処理で4回放り込みます。“`ruby
s = []
4.times do
s << gets.chomp end ``` これで配列の中に四つの入力が入りました。 あとはinclude?メソッドで、配列にH, 2B, 3B, HRの四つが存在するかを調べて、TrueならYesをFalseならNoを出力させればいいはずです。 ```ruby s = [] 4.times do s << gets.chomp end if s.include?("H") && s.include?("2B") &引数を影響を与えずにメソッドをオーバーライドしたい時は … 記法を使う
# 概要
ruby 3.0 以降はキーワード引数の仕様変更により引数の渡し方によってはエラーになるため、メソッドをオーバーライドするときは引数を `…` にするのがいいという話です。
これは 2.7 から追加された記法で引数の転送(Arguments Forwarding)というらしいです。“`ruby
class Parent
def self.hoge(a, b, c: ‘c’)
“#{a}, #{b}, #{c}”
end
endclass Child1 < Parent def self.hoge(*) "child1 #{super}" end end class Child2 < Parent def self.hoge(...) "child2 #{super}" end end Child1.hoge('d', 'e', c: 'f') #=> ArgumentError: wrong number of arguments (given 3, expected 2)
Child2.hoge(‘d’,
#4 SinatraでActiveRecordを使わずに掲示板アプリを作ってみた
[前回](https://qiita.com/divclass123/items/9a9e2f9ccfba2286a901#comment-2aa5a3d01881ceaf6cc4)の続き
前回コードを見ていったので、いよいよアプリを実行して実際の挙動を見ていきたいと思います!
んで、どんな感じでデータベース作成すればええねん。と思ったが、
setup.shを実行すれば良いと、課題の作者の谷道さんから教えていただきました。ありがとうございます。。。!(2ちゃん風に言うとサンガツ、知らんけど)# 下準備
.shの拡張子がついているファイルすら初めて見たので、、、。
まぁ要するにlinuxコマンドをファイルに書いといて
“`
$ sh setup.sh
“`
とかで一斉に実行できる感じ。# setup.sh
“`
mysql -u root < ./database/create_database.sql mysql -u root 0ch < ./database/create_topics.sql mysql -u root 0ch < ./database/cre【Rails】 N+1問題 (eager_loadとpreload)アプリで学べ
##はじめに
最近SQLの知識がついてきたので、N+1問題を改めて勉強。
そしたらまだまだわかっていない箇所があったので、アウトプットしていく。
アウトプットのやり方は 教材アプリで実施(下記URL参照)
実際に手を動かして知識の定着をはかるhttps://www.techpit.jp/courses/79/curriculums/82/sections/623/parts/2162
僕らがスクールで扱っていたデータ数なんて毛みたいなものなので、今回は700近いデータ数で実施。
データ数多いので、表示スピードにもろ影響することがわかる。### 対策メソッド
![スクリーンショット 2021-08-03 15.37.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1183228/13dbfa6c-5228-9138-d154-7449df90ccfd.png)
詳細はいっぱい記事があるので、割愛します。
下記2つの記事がわかりやすかったので見て下さい。https://qiita.co
【Rails/Ruby/Docker/LINE messagingAPI/Heroku】単語帳bot
## 1.はじめに
初めまして、小林凌(こばやし りょう)と申します。現在、バックエンドエンジニアへの転職を目指し、転職活動中です。
当記事は、**LINE messagingAPI**を活用したアプリケーションの開発の流れをまとめた記事になります。
LINE messagingAPIを活用して、開発したい方の参考になればと思います。
## 開発アプリ
まず私が開発したアプリについて紹介します。
– アプリ名 「単語帳bot」
– 公式LINEなので下記QRコードから友達登録できます。![スクリーンショット 2021-07-26 12.00.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1536072/8eaaac60-60b7-ceaf-238b-eb320d7cd92d.png)
LINEでのトーク画面で、**問題、答えの登録**を可能にし、自作の**単語帳や問題集**として使用できます。
– **デモプレイ動画**
【Rails】Todoリスト カードの移動実装
###はじめに
Todoリストアプリを作成するにあたって、カードの移動を実装してみたので
備忘録として記事を書く。### 使用環境
Rails 6.0.4′### カードの移動って?
![スクリーンショット 2021-08-03 12.02.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1183228/b4246afd-10b9-77bb-787c-c3e98e393792.png)
![スクリーンショット 2021-08-03 12.03.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1183228/0de770a3-b786-b711-0949-67a602b0bcd7.png)
![スクリーンショット 2021-08-03 12.03.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1183228/5bfc1Ruby問題のアウトプット
#問題20
Aさんは普段土日が休みの仕事に就いており、休みの日は遅くまで寝ていたいと考えているとします。
そこで、Aさんのためにその日が遅くまで寝ていられるかどうかを判断するプログラムを作成しましょう。
休みの場合はTrueを、休みでない場合はFalseを出力し、Trueの場合は長く寝ていられると判断します。休みかどうかを判別するメソッドsleep_inを定義し、引数として2つ渡します。1つ目が月~金曜日(weekday)であるかどうか、2つ目祝日やお盆休みなどの休暇日(vacation)であるかどうかです。
具体的には、土曜日または日曜日の場合(weekdayがfalseの場合)や、休暇日(vacationがtrue)の場合は、休みとなるのでTrueを返します。
呼び出し方:
“`
sleep_in(weekday, vacation)
“`出力例:
“`
sleep_in(false, false) → True
sleep_in(true, false) → False
sleep_in(false, true) → True
“`#答え
“`[Rails]ransackを使った検索機能
今回は、`ransack`というgemを使った検索機能の解説をしていきたいと思います。
`ransack`を使うことで、検索機能をかんたんに実装することができます。
gemの素晴らしさを体感できる系ですねw#開発環境
> ruby 2.6.3
> Rails 5.2.6#前提
検索機能は、ユーザーの検索を例に出していくので、すでになんらかのアプリで、ユーザーが存在するものをご準備ください。
#手順
– gem ransackのインストール
– コントローラー
– ルーティング
– ビュー#gem ransackのインストール
まずは、gem ransackをインストールします。
“`Gemfile
gem ‘ransack’
“`を追加できたら
“`
$ bundle install
“`#コントローラー
ではさっそく、検索の処理をコントローラーに記述していきます。
ここでは、usersコントローラーにsearchアクションには、検索の処理を、indexアクションでは検索結果を取得しています。
“`controllers/users_
[Ruby on rails] ”undefined method `each’ for nil:NilClass”エラーが出た時の対処法
エラー画面
グループを作成後、一覧画面でグループ一覧を作成しようとしてたところ、
こんなエラーが出てきました。こういうエラーは大体スペルミスに原因があるのではないかと思います!
![スクリーンショット 2021-08-03 9.49.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/bacd570a-6c0c-5a9b-3fa0-3677aaa2fc45.png)
解決方法
コントローラー、モデルの記載を見直せど、スペルミスは見当たらず…
createコントローラーをよく見たのですが、わからず…
form_withでの送信がなんか、おかしいのかな~?と思ってみたら…ここでした!
“`
<%= form_with model: group, local: true do |f| %><%=f.label"勉強会名"%【Rails】form_withを使って情報入力欄を実装する方法
#対象者
* form_withを使って入力項目の作成を考えている方
#目的
* form_withの基礎構文を学んで、実装手順を抑えること
#実際の手順と実例
###1.前提
Rails tutolialのsample appを参考にしています。* ユーザー登録の新規登録フォームを作成しようとしています。
* UsersController、Userモデル、new.html.erbに実装していきます###2.コントローラーの設定
下記のようにコントローラーに記載します。
“`users_controller.rb
class UsersController < ApplicationController def new @user = User.new end end ``` 以前メンターさんにご質問させていただいた際に、 「form_withが筆記用具だとしたらnewメソッドが紙みたいなもの」 的なニュアンスのこと仰っていて、すごくしっくり来た気がします。 つまり、コントローラーにnewメソッドを定義したインスタンス変数変数は必須sinatraを使ってDiscordのメッセージをLINEのグループに共有し連結する
# 概要
Discord使っていて通知の面だったり、LINEのほうが日常的に使っていて浸透しやすいという事があったので、LINEとDiscord両方に同じメッセージを送るのがめんどくさいので、DiscordのメッセージをLINEにも送るbotを作ることにしました。下記のサイトを参考にさせてもらいました。
https://qiita.com/kkbase515/items/d7ada101e3095c2bd051
https://qiita.com/fullmated/items/81d1a49ed3d49eda2285# はじめに
この記事では
– Heroku使ったことない
– RubyはProgateで一周ぐらい
– Sinatraは全く知らない
という人に向けて説明していきます。
かくいう私自身がその状態だったので、復習、議事録という意味でもこの記事を書きました。## 環境
– MacOS11.4
– Rubyインストール済み
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-darwin20]
http【初心者向け】rails 投稿機能解説!form_withやストロングパラメータを図で理解!
# はじめに
form_withをつかった投稿機能は、Rails 初学者がつまづきやすいポイントかと思います!
本記事では **form_withを使った入力フォームの作成** 、**ストロングパラメータ**、**データの保存**までを解説していきます。図を織り交ぜていますので、イメージをつかみつつ理解を深めていきましょう:sunny:
### 動作環境
– Ruby 2.6.7
– Rails 5.2.7 (動作としてはrails6系でも同様です)### 実装する機能・仕様
フォームでタイトルと内容を入力し、データベースに保存する。
Blogモデルにtitle、bodyカラムを準備。# form_withを用いて入力データを送信する
new.html.erbにてフォームを以下のように作成していきます。“`ruby:blogs_controller.rb
def new
@blog = Blog.new
end
“`“`erb:new.html.erb
Blogs#new
<%= form_with model: @blog, loc
技術書「Rubyソースコード完全解説」 と 「docker で ruby」構築
今まで買ってよかった技術書を紹介しよう!
https://qiita.com/official-events/d409f91fc8b9b44cefb4
の企画に参加する記事です。Docker上のみでシステムを作るときの構成
https://qiita.com/official-events/339b6440dbd578f4f66f
参加記事です。#協賛企画
bookmeterで協賛企画をはじめました。
今まで買ってよかった技術書を紹介しよう!
https://bookmeter.com/events/8648技術書は、紹介してもなかなか反応がなく、嫌気が指すかもしれません。
amazonに1万冊感想を書くという目標を立てたとき、技術書ばかりを書いていて、
反応がほとんどなく、底なし沼に石を投げているような感覚に襲われたことがあります。そこで5つの手を打ちました。
1つは、芥川賞、直木賞を読むことにより、文学の投稿をするようにしました。
芥川賞、直木賞を読む コミュニティ
https://bookmeter.com/communities/332458
芥川賞、binding.pryを使えるようになりたい!2
# はじめに
本記事は、昨日投稿した続きで、
「binding.pry」の使い方をまとめたものになります。
前回の投稿もご参照ください。https://qiita.com/mkato1013/items/e7cbc21a4a03c9acf22c
# 「binding.pry」の目的
たとえ、「binding.pry」が万能だとしても、
確認できることは限られています。“`
目的(私が思いつくものです。他にもあると思います。)①paramsの中身の確認
②「binding.pry」の後に、if文があれば、true or falseの指示が出せているかどうか
③エラー内容の確認
④インスタンス変数の中身の確認
“`
結論としては、
`何かの中身や結果が期待するものかどうかを調べたい時`
`エラーの原因はどこにあるのかを探したい時`
が目的となります。# 何ができる?
“`
ここのコードが間違えているため、このように修正しなさい!!
“`
という`直接的にエラーを解決できるものではありません`。“`
ここではないかという目星をつけ、
「ここは間違えていない!関連する記事
OTHERカテゴリの最新記事
- 2024.09.19
JavaScript関連のことを調べてみた
- 2024.09.19
JAVA関連のことを調べてみた
- 2024.09.19
iOS関連のことを調べてみた
- 2024.09.19
Rails関連のことを調べてみた
- 2024.09.19
Lambda関連のことを調べてみた
- 2024.09.19
Python関連のことを調べてみた