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

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

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

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Q&A

1回答

1296閲覧

rails アプリをデプロイしたがWe're sorry, but something went wrong.となる

iyonegaki

総合スコア19

unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

0グッド

0クリップ

投稿2021/12/30 12:17

編集2021/12/31 04:48

前提・実現したいこと

タイトルの通りrails アプリをデプロイしたのですがWe're sorry, but something went wrong.と出てしまいました.
具体的には,問題を解くようなアプリで解答画面から答え合わせのボタンを押すとエラー画面が出てきます.
イメージ説明
↓答え合わせボタンを押す
イメージ説明

理想はこのような画面に遷移したいです,ローカルだと動きます
イメージ説明
デプロイはこのサイトを参考にしました.

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

IPアドレス - - [30/Dec/2021:08:53:53 +0000] "GET /student/answer HTTP/1.1" 200 4598 "http://サーバのIPアドレス/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36" "-" IPアドレス - - [30/Dec/2021:08:54:10 +0000] "POST /student/answer/answer_check HTTP/1.1" 302 119 "http://サーバのIPアドレス/student/answer" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36" "-" IPアドレス - - [30/Dec/2021:08:54:10 +0000] "GET /student/answer/result HTTP/1.1" 500 1635 "http://サーバのIPアドレス/student/answer" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36" "-"

試したこと

同じような挙動をした画面が一部あったのですが,そっちは画像をコンパイルしていなかったという理由でした.
EC2を再起動したりしたのですが,特に変化がありませんでした.

初めてのデプロイでわからないことが多々あるかもしれませんが,ご教授お願い致します.
また実際に動かして挙動を確認したいということでしたらIPアドレスも載せるので申しつけください.
よろしくお願いします.

環境

ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]
Ruby on Rails 5.2.6
MySQL
Nginx
Unicorn 5.4.1

追記

汚いですが,このようなコードを書きました.

コード

ビュー

解答画面
show.html.erb

<div class="answer-wrapper"> <h1>問題解答</h1> <h4 class="answer-label-title">それぞれのユーザーに対する危険度を解答してください</h4> <br> <%= form_with model: @answer, url: student_answer_answer_check_path, local: true do |form| %> <% @virtual_users.each do |virtual_user| %> <p class="answer-label-title"><%= form.label :virtual_user_id, virtual_user.name %>の危険度</p> <%= form.label :danger_level, '危険度' %> <%= form.select(:"danger_level[#{virtual_user.id}]", [["現状情報の流出はない", 1], ["今後の投稿次第では危険", 2], ["個人情報が流出している", 3]], {prompt: "危険度を選択してください"}) %> <br> <br> <% end %> <%= form.submit "答え合わせ" %> <% end %> </div>

採点結果の画面
result.html.erb

<div class="answer-wrapper"> <h1>採点結果</h1><h4>正解 <%= @num_of_correct %>問/<%= $result.length %>問</h4> <br> <% $result.each do |virtual_user_id, student_ansewer| %> <h4 class="answer-label-title"> <%= @answers.find_by(virtual_user_id: virtual_user_id).virtual_user.name %>の危険度 </h4> <h5>解答</h5> <span> <% if student_ansewer == 1 %> 現状情報の流出はない <% elsif student_ansewer == 2 %> 今後の投稿次第では危険 <% elsif student_ansewer == 3 %> 個人情報が流出している <% else %> 未回答 <% end %> </span> <h5>正解</h5> <span> <% if @answers.find_by(virtual_user_id: @answers.find_by(virtual_user_id: virtual_user_id).virtual_user).danger_level == 1 %> 現状情報の流出はない <% elsif @answers.find_by(virtual_user_id: @answers.find_by(virtual_user_id: virtual_user_id).virtual_user).danger_level == 2 %> 今後の投稿次第では危険 <% elsif @answers.find_by(virtual_user_id: @answers.find_by(virtual_user_id: virtual_user_id).virtual_user).danger_level == 3 %> 個人情報が流出している <% end %> </span> <div> <h5>解説</h5> <span>解説が入ります解説が入ります解説が入ります解説が入ります解説が入ります解説が入ります解説が入ります解説が入ります解説が入ります解説が入ります</span> </div> <br> <% end %> </div>

モデル

virtual_user.rb

# == Schema Information # # Table name: virtual_users # # id :integer not null, primary key # catch_copy :text # follow :integer # follower :integer # image :string # name :string # sub_name :string # created_at :datetime not null # updated_at :datetime not null # class VirtualUser < ApplicationRecord # 関連 has_many :posts, dependent: :destroy has_many :follows, dependent: :destroy has_many :followings, through: :follows, source: :follower has_many :passive_follows, class_name: 'Follow', foreign_key: 'follower_id', dependent: :destroy has_many :followers, through: :passive_follows, source: :virtual_user has_many :goods has_many :favorites, through: :goods, source: :post has_one :answer, dependent: :destroy # 委譲 def followings_count; followings.count; end def followers_count; followers.count; end # バリデーション validates :name, presence: true validates :sub_name, presence: true end

answer.rb

# == Schema Information # # Table name: answers # # id :integer not null, primary key # danger_level :integer # created_at :datetime not null # updated_at :datetime not null # virtual_user_id :integer # class Answer < ApplicationRecord # 関連 belongs_to :virtual_user # バリデーション validates :virtual_user_id, uniqueness: true validates :danger_level, presence: true end

コントローラー

class Student::AnswersController < ApplicationController before_action :set_virtual_users, only: [:show] before_action :set_answers, only: [:result] def show end def answer_check $result = [] params[:danger_level].each do |key, value| key = key.to_i value = value.to_i set_answer(key) buf = [key, value] if value == @answer.danger_level buf.push(1) $result.push(buf) else buf.push(0) $result.push(buf) end end redirect_to student_answer_result_path end def result @num_of_correct = 0 $result.each do |result| if result[2] == 1 @num_of_correct += 1 end end end private def set_virtual_users @virtual_users = VirtualUser.all end def set_answers @answers = Answer.all end def set_answer(answer_id) @answer = Answer.find_by(virtual_user_id: answer_id) end end

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

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

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

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

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

guest

回答1

0

code全くなしでわかってくれ、というのはちと。。。。

おそらく、答えを入れずに答え合わせしたときの処理が不足or間違えていてFATALしたのだろうとは思いますが。

そうでなさそうでしたら、
model、controller のcodeを載せてください。
エラーメッセージもその1行ではなく全文を載せてください。

追記
エラーメッセージを全文載せていただけないので推定が混じります。
form.select(:"danger_level[#{virtual_user.id}]" に対し
params[:danger_level] で受けてます。
のでおそらく Nilにeachはないよ、というエラーでしょう。
form.select の最初の引数は Answerの項目です。danger_level12 とかいう項目は無いでしょう。

投稿2021/12/30 12:43

編集2022/01/01 04:52
winterboum

総合スコア23340

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

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

iyonegaki

2021/12/31 04:45

ご指摘ありがとうございます,コードを記述しました. 答え合わせは答えを入れても入れなくても同じようなエラー画面が出てきました.
winterboum

2022/01/01 04:45

エラーメッセージは?
iyonegaki

2022/01/02 14:15 編集

お返事遅くなり大変申し訳ございません. 初めてでわからないのですが,エラーメッセージはnginxのerror.logに書いてあるのでしょうか? access.logを載せていました. error.logにはなにも出力されませんでした.
winterboum

2022/01/02 22:56

Rails root(appとかconfigのあるところ)にlogってありません? その log/development.log です
winterboum

2022/01/02 23:07

あ。production.log のほうか
iyonegaki

2022/01/03 15:43

すいません,原因はわからないのですがなぜか想定通りの動作をするようになっていました. お付き合いいただきありがとうございました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問