Вопрос

Я новичок в Rails.Я пытаюсь включить использование именованных маршрутов в примере приложения rails.Когда я делаю следующее и пытаюсь получить доступ к странице в моем браузере, я получаю Контроллер действия:Пойманное исключение как заголовок, так и no route matches Сообщение.

конфигурация/routes.rb

SampleApp::Application.routes.draw do
# root to: 'static_pages#home' #matches '/'
  root to: 'static_pages#home'

  match '/help', to: 'static_pages#help', via: [:get, :post] (*)
  match '/about', to: 'static_pages#about', via: [:get, :post] (*)
  match '/contact', to: 'static_pages#contact', via: [:get, :post] (*)
  [...comments...]
end

У меня есть необходимые действия в моем контроллере.У меня также есть представления, но ни одно из них не является сообщением об ошибке.Точное сообщение об ошибке выглядит следующим образом:

No route matches [GET] "/static_pages/home"

Я тоже пытался root 'static_pages#home' в качестве альтернативы.По-прежнему ничего.

(*) Когда я удаляю via: [:get, :post], браузер выдает ошибку RuntimeError со словами,

Вам не следует использовать match способ маршрутизатора без указания метода HTTP.Если вы хотите показать свое действие обоим GET и POST, добавьте via: [:get, :post] вариант.Если вы хотите раскрыть ваше действие, чтобы ПОЛУЧИТЬ, используйте get в маршрутизаторе:Вместо того , чтобы:соответствовать "controller#action" Выполнить:получить "контроллер#действие"

Это было полезно?

Решение

Root - это маршрут при посещении localhost: 3000, поэтому при посещении 'localhost: 3000' он сопоставляется со static_pages/home в вашем случае.

Если вам нужно, чтобы 'localhost: 3000/static_pages/home' также был перенаправлен на соответствующий контроллер, вам необходимо дополнительно определить маршрут следующим образом.

get 'static_pages/home'

В противном случае я не думаю, что необходимо перезапускать ваш сервер после изменения вашего маршрута, если, конечно, что-то не так, но в основном это не решает проблему.

Другие советы

  1. ПОМНИТЕ, что после изменения маршрутизации вы ДОЛЖНЫ перезапустить свой сервер!!!

  2. мне кажется, что вы пытаетесь открыть в своем браузере URL-адрес 127.0.0.1:3000/static_pages/home когда ваш корневой маршрут определяет 127.0.0.1:3000

PS Я надеюсь, что это поможет вам

Я думаю, что этот пост развеет все ваши сомнения, У меня была похожая проблема ранее.

На самом деле, когда вы выбираете URL в своем браузере, по ошибке вы пытаетесь получить доступ

local:3000/static_pages/home

когда вы должны попытаться получить доступ `

local:3000/home

и по мере того, как вы будете следовать руководству, в нужное время вы поймете, почему "Совпадение" не принимается но на данный момент вам следует продолжить работу с вашим get"route" формат.Одна важная вещь заключается в том, что вы должны провести некоторое исследование, прежде чем задавать какой-либо вопрос, и поскольку этот вопрос был задан несколькими другими людьми здесь, включая меня, нет смысла публиковать дублирующуюся тему.Я надеюсь, вам все ясно.наслаждайтесь!!!

вот аналогичный вопрос.https://stackoverflow.com/a/19047811/2545197

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top