Как правильно маршрутизировать с классами STI - PullRequest
0 голосов
/ 14 февраля 2020

Итак, я начал использовать STI для одного класса моей страницы Statuswebpage.

Родительский класс выглядит так:

  class Check < ApplicationRecord
    (some methods defined but not important for this issue i guess)
  end

А дочерний класс выглядит так:

  class PingCheck < Check
    (also some methods but again not important for this issue)
  end

А мои маршруты такие:

                               Prefix Verb   URI Pattern
                              results GET    /results(.:format)
                                      POST   /results(.:format)
                           new_result GET    /results/new(.:format)
                          edit_result GET    /results/:id/edit(.:format)
                               result GET    /results/:id(.:format)
                                      PATCH  /results/:id(.:format)
                                      PUT    /results/:id(.:format)
                                      DELETE /results/:id(.:format)
                               checks GET    /checks(.:format)
                                      POST   /checks(.:format)
                            new_check GET    /checks/new(.:format)
                           edit_check GET    /checks/:id/edit(.:format)
                                check GET    /checks/:id(.:format)
                                      PATCH  /checks/:id(.:format)
                                      PUT    /checks/:id(.:format)
                                      DELETE /checks/:id(.:format)
                          ping_checks GET    /ping_checks(.:format)
                                      POST   /ping_checks(.:format)
                       new_ping_check GET    /ping_checks/new(.:format)
                      edit_ping_check GET    /ping_checks/:id/edit(.:format)
                           ping_check GET    /ping_checks/:id(.:format)
                                      PATCH  /ping_checks/:id(.:format)
                                      PUT    /ping_checks/:id(.:format)
                                      DELETE /ping_checks/:id(.:format)
                        subcategories GET    /subcategories(.:format)
                                      POST   /subcategories(.:format)
                      new_subcategory GET    /subcategories/new(.:format)
                     edit_subcategory GET    /subcategories/:id/edit(.:format)
                          subcategory GET    /subcategories/:id(.:format)
                                      PATCH  /subcategories/:id(.:format)
                                      PUT    /subcategories/:id(.:format)
                                      DELETE /subcategories/:id(.:format)
                           categories GET    /categories(.:format)
                                      POST   /categories(.:format)
                         new_category GET    /categories/new(.:format)
                        edit_category GET    /categories/:id/edit(.:format)
                             category GET    /categories/:id(.:format)
                                      PATCH  /categories/:id(.:format)
                                      PUT    /categories/:id(.:format)
                                      DELETE /categories/:id(.:format)
                            incidents GET    /incidents(.:format)
                                      POST   /incidents(.:format)
                         new_incident GET    /incidents/new(.:format)
                        edit_incident GET    /incidents/:id/edit(.:format)
                             incident GET    /incidents/:id(.:format)
                                      PATCH  /incidents/:id(.:format)
                                      PUT    /incidents/:id(.:format)
                                      DELETE /incidents/:id(.:format)
                        welcome_index GET    /welcome/index(.:format)
                                 root GET    /

А вот мой файл config / rout.rb:

  1 Rails.application.routes.draw do
  2   resources :results
  3   resources :checks
  4   resources :ping_checks
  5   resources :subcategories
  6   resources :categories
  7   resources :incidents
  8   get 'welcome/index'
  9   # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
 10   root 'welcome#index'
 11 end

Итак, у меня есть страница указателя, где я могу видеть каждый проверьте в таблице. И в конце страницы у меня была ссылка «Новая проверка», которая работала нормально. Но я хочу изменить его на ссылку «Новая проверка связи». И в будущем я хочу иметь возможность видеть все мои различные проверки (например, проверку входа в систему) в этой таблице и создавать их на этом сайте. Вот как теперь выглядит ссылка:

<%= link_to 'New Ping Check', new_ping_check_path %>

, но когда я пытаюсь кликнуть по этой ссылке, появляется ошибка «Ошибка маршрутизации: неинициализированная константа PingChecksController». Но в консоли я могу создать pingcheck без проблем, и он появляется на странице индекса проверок.

У меня есть контроллер для проверок, но не для PingChecks. Я создал Check Model с помощью скаффолда, чтобы он имел новый, destroy, edit et c. и др c. методы. (может быть, это важно, я не знаю)

Нужно ли мне писать новый контроллер для pingcheck? даже если код в контроллере будет в основном таким же, только он помнит, что это тип PingCheck

Что мне делать?

...