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

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

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

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

Q&A

解決済

1回答

1638閲覧

ActiveRecord::RecordNotFound in TopController#entryのエラー

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

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

0グッド

0クリップ

投稿2016/04/24 10:59

ActiveRecord::RecordNotFound in TopController#entry
Couldn't find Product with 'id'=
とエラーが出ました。

top_controller.rbには

Ruby

1class TopController < ApplicationController 2 3 def entry 4 @product = Product.find(params[:id]) 5 end 6 7 def post 8 Review.create(nickname:current_user.nickname, product_id:params[:id], rate:create_params[:rate], review:create_params[:review]) 9 redirect_to action: :index 10 end 11 12end

と記載し、
modelsのproduct.rbには

Ruby

1class Product < ActiveRecord::Base 2 has_many :reviews 3end

と記載し、
routes.rbには

Ruby

1TechReviewSite::Application.routes.draw do 2 3 root 'products#index' 4 get '/product/:id' => 'products#show' 5 get '/search/' => 'top#search' 6 get'/entry/:id' => 'top#entry' 7 post'/entry/:product_id' => 'top#post' 8 get '/product/:id/reviews/new' => 'reviews#new' 9 get 'products/search' => 'top#entry' 10 11 end

と記載しました。

idが空、という事ですが、データベースにはすでにidが入っており、なぜnil
と表示されるのかわかりません。
マイグレーションでカラムの追加をしたほうがよいのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

ruby

1 @product = Product.find(params[:id])

params[:id]が「nil」とか「""」になってませんか?
findメソッドはid しか指定できないしレコード取得に失敗すると例外が発生します。
もしparamsに空またはnilが入る可能性があるのなら find_byメソッドを使ってはいかがでしょうか?

find_byメソッドはrails4から追加されたメソッドですが、データが存在し無かった場合nilを返してくれます。

投稿2016/04/26 07:36

ShoheiUyama

総合スコア206

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問