🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 6

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

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Q&A

1回答

1729閲覧

開発環境ではエラーが出なかったが、本番環境でがエラーが出る

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 6

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

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

0グッド

0クリップ

投稿2021/03/14 03:18

実現したい事

本番環境で下記のようなエラーが出ているので解消したい

Couldn't find Category with 'id'=1

###現状

%li フロントエンド %ul.sub %li = link_to "①HTML", card_category_path(:card_id ,1) %li = link_to "②CSS", card_category_path(:card_id, 2) %li = link_to "③Javascript", card_category_path(:card_id, 3) %li

上記のリンクを本番環境でクリックするとエラーが起きてしまいます。
開発環境では保存されているデータがなくても下記のviewに遷移します。

.Table .Table__title = "「#{@category.name}」の登録一覧" .Table__lists .Table__lists__list - @cards.each do |card| .Table__lists__list__title = link_to "#{card.title}", card_path(card.id) .Table__lists__list__btn = link_to "編集", edit_card_path(card.id) .Table__lists__list__btn = link_to "削除", card_path(card.id), method: :delete .Pagenation = paginate @cards .Return .Return__btn = link_to "トップページに戻る", root_path

ターミナル

2021-03-12T09:06:22.137422+00:00 app[web.1]: D, [2021-03-12T09:06:22.137280 #4] DEBUG -- : [643de8c0-58d7-45a8-8caf-bac2f3e6b238] (3.1ms) SET NAMES utf8, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483 2021-03-12T09:06:22.161149+00:00 app[web.1]: D, [2021-03-12T09:06:22.161000 #4] DEBUG -- : [643de8c0-58d7-45a8-8caf-bac2f3e6b238] Category Load (2.8ms) SELECT `categories`.* FROM `categories` WHERE `categories`.`id` = 1 LIMIT 1 2021-03-12T09:06:22.161778+00:00 app[web.1]: I, [2021-03-12T09:06:22.161679 #4] INFO -- : [643de8c0-58d7-45a8-8caf-bac2f3e6b238] Completed 404 Not Found in 124ms (ActiveRecord: 18.4ms | Allocations: 3876) 2021-03-12T09:06:22.162488+00:00 app[web.1]: F, [2021-03-12T09:06:22.162408 #4] FATAL -- : [643de8c0-58d7-45a8-8caf-bac2f3e6b238] 2021-03-12T09:06:22.162491+00:00 app[web.1]: [643de8c0-58d7-45a8-8caf-bac2f3e6b238] ActiveRecord::RecordNotFound (Couldn't find Category with 'id'=1): 2021-03-12T09:06:22.162491+00:00 app[web.1]: [643de8c0-58d7-45a8-8caf-bac2f3e6b238] 2021-03-12T09:06:22.162492+00:00 app[web.1]: [643de8c0-58d7-45a8-8caf-bac2f3e6b238] app/controllers/categories_controller.rb:5:in `show' 2021-03-12T09:06:22.306139+00:00 heroku[router]: at=info method=GET path="/cards/card_id/categories/1" host=engineerbook-keitaro.herokuapp.com request_id=643de8c0-58d7-45a8-8caf-bac2f3e6b238 fwd="119.170.84.173" dyno=web.1 connect=5ms service=273ms status=404 bytes=93399 protocol=https 2021-03-12T09:06:23.839089+00:00 heroku[router]: at=info method=GET path="/favicon.ico" host=engineerbook-keitaro.herokuapp.com request_id=03d6704a-50b9-4749-b16a-8e86ee5c6c0c fwd="119.170.84.173" dyno=web.1 connect=1ms service=6ms status=304 bytes=48 protocol=https 2021-03-12T09:41:10.419121+00:00 heroku[web.1]: Idling 2021-03-12T09:41:10.457116+00:00 heroku[web.1]: State changed from up to down 2021-03-12T09:41:11.229242+00:00 heroku[web.1]: Stopping all processes with SIGTERM 2021-03-12T09:41:11.276123+00:00 app[web.1]: - Gracefully stopping, waiting for requests to finish 2021-03-12T09:41:11.277529+00:00 app[web.1]: === puma shutdown: 2021-03-12 09:41:11 +0000 === 2021-03-12T09:41:11.277531+00:00 app[web.1]: - Goodbye!

heroku loogs -tで確認してやはりエラーが起きているのが分かります。

ここまで調べましたがやはり原因がわからずです。どなたか教えていただけないでしょうか?

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

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

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

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

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

guest

回答1

0

一つ前の質問のコメントに書きましたが、本番環境のCategory にデータがないのでは?
テスト環境、開発環境には手で入力したとのことですが本番ではどうしてます?

Categoryの一覧を見るpathを作って確認するか、DBを直接覗くか、rails cするか。

投稿2021/03/14 03:53

winterboum

総合スコア23567

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

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

退会済みユーザー

退会済みユーザー

2021/03/14 04:38

ありがとうございます。 本番環境では確かに何もしていないです。。というのもtest環境が本番環境という認識でした。。 どのようにしたら本番環境で入力できますでしょうか?
winterboum

2021/03/14 08:40 編集

よくやるのは seed を作って取り込む。 あと、 production環境で rails c で入れる メンテのview(new、indexがミニマムかな)を作る カテゴリのコントローラーが有るのだから、そちらをもうちょい手を入れればよいのでは
退会済みユーザー

退会済みユーザー

2021/03/14 23:42

ありがとうございます! 調べてみます! また質問させていただきたいです。
退会済みユーザー

退会済みユーザー

2021/03/15 05:22

``` Category.create(:name => 'HTML', :card_id => 1) Category.create(:name => 'CSS', :card_id => 2) Category.create(:name => 'JavaScript', :card_id => 3) Category.create(:name => 'Java', :card_id => 4) Category.create(:name => 'PHP', :card_id => 5) Category.create(:name => 'Python', :card_id => 6) Category.create(:name => 'Ruby', :card_id => 7) ``` このようにしてrails db:seed 調べていくと、本番環境ではもう一工夫。。。 /var/www/アプリ名/current まで移動して実行すればデータ投入 現在こちらのcurrentの移動をターミナルで行うと ``` inouekeitarou@inouekeitarounoMacBook-Air portfolio % cd current ``` no such file or directory: currenrtと表示されてしまいます。 どのようにしたらcurrentまで移動できますか。。。
winterboum

2021/03/15 06:09

[現在こちらのcurrentの移動をターミナルで行うと] とは local環境でcurrentに行こうとしてます?
退会済みユーザー

退会済みユーザー

2021/03/15 14:31

localで行こうとしています。。 違いますか、、、?
winterboum

2021/03/15 22:36

違いますね。 どのdirに行くかというと、Rails.rootです。Gemfileやapp、config のあるdirに行ってください
退会済みユーザー

退会済みユーザー

2021/03/16 00:04

``` inouekeitarou@inouekeitarounoMacBook-Air portfolio % ls Gemfile config postcss.config.js Gemfile.lock config.ru public README.md db storage Rakefile lib test app log tmp babel.config.js node_modules vendor bin package.json yarn.lock ``` ターミナルのlsコマンドでみてみるとこのようになっています。 これからrails.rootにいく場合どのようにすればいいでしょうか? 初心者でもう訳ありません。。。
winterboum

2021/03/16 00:07

そこが Rails root です
退会済みユーザー

退会済みユーザー

2021/03/16 00:11

ここからcd currentをすると、 そのようなファイルはないと言われてしまします。。。 確かにそうです。。。
winterboum

2021/03/16 00:16

ですから、cd current は local では不要です。 そこに移ってなにをしたいの? rails db:seed とかなら、Rails.rootでやります。 curretに移るのは herokuでは /var/www/アプリ名/current がRails.rootだから
退会済みユーザー

退会済みユーザー

2021/03/16 00:28

https://qiita.com/keitah/items/71acb21cea7d4cd4b448 こちらの記事を参考にしています。 本番環境にデータを写したいです。 /var/www/アプリ名/ こちらの行き方がわかりません。。 今いるのはlocalということアドバイスありがとうございます。
winterboum

2021/03/16 09:03

まずlocalでデータが入ること確認してください。 rails db:seed して うまく行ったら、Git commitして herokuにpushして heroku run RAILS_ENV=production rails db:seed かな、。、、
退会済みユーザー

退会済みユーザー

2021/03/19 01:51

お返事遅れて申し訳ありません。 heroku run RAILS_ENV=production rails db:seed こちらのコマンドを実行しましたが、変わらずエラーが出てしまします。。。。
退会済みユーザー

退会済みユーザー

2021/03/19 02:48

inouekeitarou@inouekeitarounoMacBook-Air portfolio % heroku run RAILS_ENV=production rails db:seed Running RAILS_ENV=production rails db:seed on ⬢ engineerbook-keitaro... up, run.1500 (Free) D, [2021-03-19T01:45:54.039767 #4] DEBUG -- : (9.3ms) SET NAMES utf8, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483 D, [2021-03-19T01:45:54.097473 #4] DEBUG -- : (6.8ms) SELECT `schema_migrations`.`version` FROM `schema_migrations` ORDER BY `schema_migrations`.`version` ASC D, [2021-03-19T01:45:54.232651 #4] DEBUG -- : (2.7ms) SET NAMES utf8, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483 D, [2021-03-19T01:45:54.321694 #4] DEBUG -- : (2.7ms) BEGIN D, [2021-03-19T01:45:54.327589 #4] DEBUG -- : Category Create (5.6ms) INSERT INTO `categories` (`name`, `card_id`, `created_at`, `updated_at`) VALUES ('HTML', 1, '2021-03-19 01:45:54', '2021-03-19 01:45:54') D, [2021-03-19T01:45:54.344828 #4] DEBUG -- : (16.6ms) COMMIT D, [2021-03-19T01:45:54.357923 #4] DEBUG -- : (11.0ms) BEGIN D, [2021-03-19T01:45:54.368853 #4] DEBUG -- : Category Create (10.7ms) INSERT INTO `categories` (`name`, `card_id`, `created_at`, `updated_at`) VALUES ('CSS', 2, '2021-03-19 01:45:54', '2021-03-19 01:45:54') D, [2021-03-19T01:45:54.395439 #4] DEBUG -- : (25.9ms) COMMIT D, [2021-03-19T01:45:54.411340 #4] DEBUG -- : (11.6ms) BEGIN D, [2021-03-19T01:45:54.415574 #4] DEBUG -- : Category Create (3.1ms) INSERT INTO `categories` (`name`, `card_id`, `created_at`, `updated_at`) VALUES ('JavaScript', 3, '2021-03-19 01:45:54', '2021-03-19 01:45:54') D, [2021-03-19T01:45:54.433497 #4] DEBUG -- : (17.3ms) COMMIT D, [2021-03-19T01:45:54.443668 #4] DEBUG -- : (8.4ms) BEGIN D, [2021-03-19T01:45:54.446582 #4] DEBUG -- : Category Create (2.7ms) INSERT INTO `categories` (`name`, `card_id`, `created_at`, `updated_at`) VALUES ('Java', 4, '2021-03-19 01:45:54', '2021-03-19 01:45:54') D, [2021-03-19T01:45:54.462597 #4] DEBUG -- : (13.5ms) COMMIT D, [2021-03-19T01:45:54.477529 #4] DEBUG -- : (13.2ms) BEGIN D, [2021-03-19T01:45:54.480861 #4] DEBUG -- : Category Create (3.1ms) INSERT INTO `categories` (`name`, `card_id`, `created_at`, `updated_at`) VALUES ('PHP', 5, '2021-03-19 01:45:54', '2021-03-19 01:45:54') D, [2021-03-19T01:45:54.495516 #4] DEBUG -- : (14.0ms) COMMIT D, [2021-03-19T01:45:54.504649 #4] DEBUG -- : (7.2ms) BEGIN D, [2021-03-19T01:45:54.510290 #4] DEBUG -- : Category Create (5.4ms) INSERT INTO `categories` (`name`, `card_id`, `created_at`, `updated_at`) VALUES ('Python', 6, '2021-03-19 01:45:54', '2021-03-19 01:45:54') D, [2021-03-19T01:45:54.525963 #4] DEBUG -- : (15.1ms) COMMIT D, [2021-03-19T01:45:54.538182 #4] DEBUG -- : (9.0ms) BEGIN D, [2021-03-19T01:45:54.543277 #4] DEBUG -- : Category Create (4.8ms) INSERT INTO `categories` (`name`, `card_id`, `created_at`, `updated_at`) VALUES ('Ruby', 7, '2021-03-19 01:45:54', '2021-03-19 01:45:54') D, [2021-03-19T01:45:54.558613 #4] DEBUG -- : (14.7ms) COMMIT ターミナルをみてみるとこのようになって正常にデータが入ったと思ったのですが前と同じエラーが出てしまします。
winterboum

2021/03/19 03:15

長くて読むの厄介。 DBにアクセスして確認するか、カテゴリ一覧のviewを作るとかできません? seedやるたびにidが大きくなっていくので、id 1 が有るかどうか保証は難しい
退会済みユーザー

退会済みユーザー

2021/03/19 05:36

``` .Table .Table__title = "「#{@category.name}」の登録一覧" .Table__lists .Table__lists__list - @cards.each do |card| .Table__lists__list__title = link_to "#{card.title}", card_path(card.id) .Table__lists__list__btn = link_to "編集", edit_card_path(card.id) .Table__lists__list__btn = link_to "削除", card_path(card.id), method: :delete .Pagenation = paginate @cards .Return .Return__btn = link_to "トップページに戻る", root_path ``` カテゴリー一覧のviewはこのようにしています。 ``` class CategoriesController < ApplicationController def show #@category = Category.where(id: params[:category_id]) #@categories = Category.all @category = Category.find(params[:id]) @cards = Card.where(category_id: params[:id]).page(params[:page]).per(7) #@card = Card.find(params[:id]) end end ``` こちらコントローラもこのようにしています。
退会済みユーザー

退会済みユーザー

2021/03/19 05:41

下記のリンクのコードの ``` バックエンド %ul.sub %li = link_to "④Java", card_category_path(:card_id, 4) %li = link_to "⑤PHP", card_category_path(:card_id, 5) %li = link_to "⑥Python", card_category_path(:card_id, 6) %li = link_to "⑦Ruby", card_category_path(:card_id, 7) ``` Javaだけリンクをクリックするとエラーが起きないことになっています。 しかし、リンクを押すとHTMLの登録一覧となってしまいます。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問