В моем приложении Sinatra есть три контроллера: базовый ApplicationController и AuthorsController и BooksController, каждый из которых наследуется от ApplicationController.
Моя файловая структура для представлений:
|-views
| |
| books/
| |
| authors/
| |
| home.erb
Iустановили папку представлений для книг с set :views, "app/views/books"
в верхней части BooksController, и авторы аналогично;обе работают.
В ApplicationController определен только один маршрут:
class ApplicationController < Sinatra::Base
set :views, "app/views"
get "/" do
erb :home
end
end
Когда я перехожу к «/», он ищет домашний вид в папке «Книги» или в контроллере авторов, в зависимости от того, какой из них приходит.сначала в моем файле config.ru:
require_relative './config/environment'
use BooksController
use AuthorsController
run ApplicationController
Комментирование других контроллеров (или только строки set :views
внутри них) делает маршрут "/" ожидаемым.Мой код определенно соответствует правильному методу правильного контроллера;он просто ищет вид в неправильном месте.