質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

531閲覧

NoMethodError in UsersController#show というエラーが出てしまいます。

tora_chan

総合スコア9

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2018/07/22 11:50

前提・実現したいこと

Ruby on Railsの学習を始めたばかりで入門サイトを見ながら勉強中です。

小学生でもわかるRuby on Rails入門
https://openbook4.me/projects/92/sections/498

上記、データベースを作成して、
app/controllers/users_controller.rbを修正後、
http://0.0.0.0:3000/users/show/ryooopan にアクセスしたところタイトルのエラーが発生しました。

発生している問題・エラーメッセージ

undefined method `find_by' for #<Class:0x007fad7d389820> Did you mean? find_by_sql

該当のソースコード

ruby

1class UsersController < ApplicationController 2 def index 3 end 4 5 def show 6 if params[:username] == 'ryooopan' 7 @user = User.find_by(:username => 'ryooopan') 8 elsif params[:username] == 'moyahima' 9 @user = User.find_by(:username => 'moyahima') 10 end 11 end 12end

ruby

1class CreateUsers < ActiveRecord::Migration 2 def change 3 create_table :users do |t| 4 t.string :name 5 t.string :username 6 t.string :location 7 t.text :about 8 9 t.timestamps 10 end 11 end 12end

ruby

1@user = User.new 2@user.name = 'Ryo Suzuki' 3@user.username = 'ryooopan' 4@user.location = 'Kanagawa, Japan' 5@user.about = 'Hello, I am Ryo. I am from database!' 6@user.save 7 8@user = User.new 9@user.name = 'Shohei Aoki' 10@user.username = 'moyahima' 11@user.location = 'Tottori, Japan' 12@user.about = 'Nice to meet you. I am from database!' 13@user.save

試したこと

データベースから情報を取得しないところまでは、問題なく動作確認が取れたため、
それ以降の手順のやり直しを試した。

補足情報(FW/ツールのバージョンなど)

rbenv 1.1.1
ruby 2.3.3p222

初歩的なご質問かもしれませんが、御教授頂きたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Rails のバージョンは分かりますでしょうか?
3系を使っている場合、 find_by が使えないようです。

そのため、 User.find_by_username('ryooopan') とかにすると動くかもしれません。

Rails の3系を使っているサービスは減ってきていると思うので、バージョンは新しいものを使った方がいいかと思います。

投稿2018/07/22 14:53

ikepon

総合スコア57

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tora_chan

2018/07/22 15:26

ご回答有難うございました。 確認したところ、右記のバージョンとなっておりました。(Rails 3.2.22.5) そのため、Rails 5.2.0に更新して試したところ無事動作しました。 大変勉強になりました。 以後、5系で使ってい学習を進めたく思います。
ikepon

2018/07/22 15:41

> Rails 5.2.0に更新して試したところ無事動作しました。 おー!良かったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問