question_top.html.erbへのリンクを踏んでページにアクセスしたいのですが、ルーティングがうまくいかずエラーになってしまいます。
どこの記述の辻褄が合わないのか、ご教授よろしくお願いします。
試したこと: routes.rbにget 'home/question_top' => 'questions#question_top'を記述。=>失敗。
推測: コントローラの生成段階で、何かのファイルがふそくしている..? Routes match in priority from top to bottomなので、ルーティングの記述する順番が何かの影響をしている..? GETでアクセスしようとしているのが変..?
エラー文 Routing Error No route matches [GET] "/home/question_top.html.erb" Rails.root: /Users/suzukikohya/myapp/sambo Application Trace | Framework Trace | Full Trace Routes Routes match in priority from top to bottom
routes.rb Rails.application.routes.draw do devise_for :users root 'home#index' get 'home/index' # get 'home/userpage' => 'questions#userpage' post '/home/userpage' => 'questions#create' get '/home/userpage'=> 'questions#create' resources :questions # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end
questions_controller.rb class QuestionsController < ApplicationController def new @question = Question.new(question_params) end def new @questions = Question.new end def create @questions = Question.new(questions_params) if @questions.save flash[:notice] = "問題を作成しました!" redirect_to("home/userpage") else flash[:alert] = "作成できませんでした" redirect_to("home/userpage") end end def questions_params params.require(:questions).permit(:content, :id, :level, :answer_list) end def userpage @questions = Question.new @questions = Question.all @question = Question.new @question = Question.all end def destroy end def question_top end end
index.html.erb <!DOCTYPE html> <html lang="ja" class="no-js"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>ページのタイトル</title> <script type="module"> document.documentElement.classList.remove('no-js'); document.documentElement.classList.add('js'); </script> <link rel="stylesheet" href="/assets/css/styles.css"> <meta name="description" content="ページの説明文"> <link rel="icon" href="/favicon.ico"> <link rel="apple-touch-icon" href="/apple-touch-icon.png"> <link rel="manifest" href="/my.webmanifest"> </head> <!-- body --> <body> <!-- container --> <div class="container"> <div class="navbar"> <div class="navbar-header"> <div class="navbar-button"> <a class="navbar-title" href="/home/index"><h1>家事育児スキル認定アプリ</h1></a> </div> <form action="#" method="post"> <nav class="user-login"> <div class="user-icon" > <img src="img/#" alt="user-icon"> </div> <p>ユーザー名<br> <input type="text" name="user-name"></p> <p>パスワード<br> <input type="text" name="user-password"></p> <input type="checkbox" name="remember-me">Remember me <a href="/forgot-password.html">Forgot Password</a> <p><input type="button" value="Log in" id="login-button"></p> <p><input type="button" value="Sign Up" id="signup-button"></p> </nav> </form> </div> </div> <br> <br> <br> <link_to "ログアウト", destroy_user_session_path, method: delete %> <div class="level-select"> <div class="easy-question"><a href="/home/question_top.html.erb">初級</a> <p>初めての方はこちら</p> </div> <div class="normal-question"><a href="/home/normal-question.html">中級</a> <p>人生の必須知識を<br> 身に着けましょう </p> </div> <div class="hard-question"><a href="/home/hard-question.html">上級</a> <p>「パートナー」はおまかせあれ</p> </div> </div> </div> <!-- /container --> <!-- Footer --> <div id="footer"> </div> <!-- /Footer --> <!-- copyrights --> <div id="copyrights"> <div class="container"> <p> © Copyrights <strong>HogeHoge</strong>. All Rights Reserved</p> </div> </div> <!-- /copyrights --> </body> <!-- /body --> </html>
question_top.html.erb アクセスしたいリンク <!DOCTYPE html> <html lang="ja" class="no-js"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>ページのタイトル</title> require 'erb' <script type="module"> document.documentElement.classList.remove('no-js'); document.documentElement.classList.add('js'); </script> <link rel="stylesheet" href="/assets/css/styles.css"> <meta name="description" content="ページの説明文"> <link rel="icon" href="/favicon.ico"> <link rel="apple-touch-icon" href="/apple-touch-icon.png"> <link rel="manifest" href="/my.webmanifest"> </head> <!-- body --> <body> <!-- container --> <div class="container"> <div class="user-icon"> <!-- 問題を作った人のアイコンや情報を表示 --> <img src="img/#" alt="user-icon" id=> </div> <div class="question-contents"> <%= name %> </div> <div class="answer-list"> <div class="answer-select1" id=""><% answer-selectA %></div> <!-- 答えの選択肢に「問題を作った人のIDと、問題のIDと、解答のIDが紐付けられている --> <div class="answer-select2" id=""><% answer-selectB %></div> <div class="answer-select3" id=""><% answer-selectC %></div> </div> # # 部分テンプレの呼び出し # <%= render partial: 'layouts/_question_top.html.erb' %> # <!--例 テンプレート内の「hoge」という変数に「こんにちは」が代入される --> # <%= render partial: '_question_top.html.erb', locals: { question_contents: '' } <div class="create_questionform"> <%= form_for @users do |f| %> <p>ユーザー名</p> <input name="username" value="<%= @users.username %>"> <% end %> <%= form_for @questions do |f| %> <p>問題文</p> <input name="question_contents" value="<%= @questions.question_contents %>"> <input name="answer_list" value="<%= @questions.answer_list %>"> <input type="submit" value="問題の作成完了"> <% end %> </div> <%= form_for @users do |f| %> <p> <% f.text_field :name %> </p> <% end %> <%= form_for @question do |f| %> <p> <%= f.text_area :question_contents %> <%= f.text_area :answer_list %> </p> <% end %> <%= form_with model: @post do |form| %> <textarea name="contents"></textarea> <input type="submit" value="作成完了"> <% end %> <div class="flash-notifications"> <% flash.each do |key, message| %> <p><%= message %></p> <% end %> </div> </div> <!-- /container --> <!-- Footer --> <div id="footer"> </div> <!-- /Footer --> <!-- copyrights --> <div id="copyrights"> <div class="container"> <p> © Copyrights <strong>HogeHoge</strong>. All Rights Reserved</p> </div> </div> <!-- /copyrights --> <!-- JavaScript Libraries --> <!-- Template Main Jabascript File --> </body> <!-- /body --> </html>
![guest](/img/icon/icnUserSample.jpg)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。