前提・実現したいこと
タイトルの通り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
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/31 04:45
2022/01/01 04:45
2022/01/02 14:15 編集
2022/01/02 22:56
2022/01/02 23:07
2022/01/03 15:43