Ответ 1
Используйте get
для GET и post
для POST.
get '/about', to: 'static_pages#about'
Я сгенерировал контроллер и изменил маршруты, но открытие ссылок дает ошибки на моем локальном сервере.
Генерация контроллера и маршрутов
rails generate controller StaticPages home about team contact
Изменить маршруты .rb
MyApp::Application.routes.draw do
root to: 'static_pages#home'
match '/about', to: 'static_pages#about'
match '/team', to: 'static_pages#team'
match '/contact', to: 'static_pages#contact'
end
Работа корневого пути, но ни одна из команд "about", "team" или "contact" не работает. Это ошибка, которую я получаю:
"Вы не должны использовать метод match
в своем маршрутизаторе, не указав метод HTTP. Если вы хотите разоблачить ваши действия как для GET, так и для POST, добавьте параметр via: [:get, :post]
. Если вы хотите выставить свое действие GET, используйте get
в маршрутизаторе: Вместо: match" controller # action "Do: get" controller # action ""
Почему я не могу использовать 'match'?
Используйте get
для GET и post
для POST.
get '/about', to: 'static_pages#about'
Вы можете использовать match
, вы должны добавить опцию via:
:
match '/about', to: 'static_pages#about', via: :get
match '/team', to: 'static_pages#team', via: :get
match '/contact', to: 'static_pages#contact', via: :get
Вы также можете передать другие HTTP-глаголы via:
, если вам нужно, например via: [:get, :post]
Источник: Руководство по маршрутизации Rails
Сначала вы должны указать HTTP-метод, добавив via: :get
в конец match 'st' => 'controller#action
И лучше использовать get '/home', to: 'static_pages#home'
Но есть проблема, что ваш код не следует за RESTful, который поддерживает только 7 действий: индекс, новый, редактировать, создавать, обновлять, показывать и уничтожать.
Это два решения:
SOL 1. Поместите их в другой контроллер (дома, о..), и все эти контроллеры имеют действие index
.
SOL 2. Если это слишком много, мы можем сопоставить их с действием show
. Мы используем static_pages-контроллер, и каждая страница (home, about) будет элементом.
Маршруты будут выглядеть как
/static_pages/home
/static_pages/about
Я знаю, что это не хорошо из-за префикса static_pages
.
Мы можем легко избавиться от этого, добавив пользовательские маршруты в конец файла маршрутов:
get '/:id', to: 'static_pages#show'
Что это. И если вы думаете, что это слишком много работы (я тоже так думаю), проверьте этот драгоценный камень Высокое напряжение. Получайте удовольствие.