Ошибка маршрутизации неинициализированная константа GradesController - PullRequest
0 голосов
/ 05 октября 2018

Я решил запустить проект Ruby on Rails без строительных лесов, потому что я действительно хотел учиться в процессе.Я искал этот сайт, но не могу найти ответ на свой вопрос, поэтому я спрошу здесь.Я запустил проект Rails, где пользователь вводит свои оценки.К сожалению, на новой странице оценки, когда пользователь нажимает кнопку Создать оценку, я получаю сообщение об ошибке в строке темы.Вот мой код для формы, которую я использую на новой странице под контроллером оценок.

<%= form_with(model: grade, local: true) do |f| %>
<% if grade.errors.any? %>
<div id="error_explanation">
  <h2><%= pluralize(grade.errors.count, "error") %> prohibited this grade 
from being saved:</h2>

  <ul>
  <% grade.errors.full_messages.each do |message| %>
    <li><%= message %></li>
  <% end %>
  </ul>
 </div>
 <% end %>

<div class="field">
<%= f.label :assignment %>
<%= f.text_field :assignment %>
</div>
<div class="field">
<%= f.label :score %>
<%= f.text_field :score %>

<div class="actions">
<%= f.submit %>
</div>

Это моя страница маршрутов:

Rails.application.routes.draw do
resources :grades
root 'grade#index'
get 'grade/index'
get 'grade/show'
get 'grade/new'
get 'grade/edit'
get 'grade/create'
get 'grade/update'
get 'grade/destroy'
# For details on the DSL available within this file, see 
http://guides.rubyonrails.org/routing.html
end

ЕслиДля ответа на вопрос требуется больше кода, пожалуйста, дайте мне знать.

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Контроллеры являются множественными, проверьте имя файла контроллера, чтобы убедиться, что он множественный, затем проверьте изменение имени класса контроллера с GradeController на GradesController.

0 голосов
/ 05 октября 2018

Исходя из названия вашего вопроса, Rails ищет файл app / controllers / grades_controller.rb, который определяет класс GradesController.

Создайте следующий файл, и вы должны перейти к следующему шагу

# app/controllers/grades_controller.rb
class GradesController < ApplicationController
  def new
    @grade = Grade.new
  end

  def create
    # logic for persisting the grade object goes here
  end

  # other controller methods, here
end

В форме для новой оценки используйте переменную экземпляра (ту, что с символом @), которую вы определилив GradesController # new метод:

<%= form_with(model: @grade, local: true) do |f| %>

На ваших маршрутах это все, что вам нужно:

Rails.application.routes.draw do
  resources :grades
  root 'grades#index' # not 'grade#index'
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...