Michael Hartl Rails Учебное пособие Глава 3 Ошибки маршрутизации на локальном сервере
-
21-12-2019 - |
Вопрос
Это второй раз, когда это произошло - один раз при использовании рубинового шахта, и однажды во время прохождения чистого текстового маршрута с использованием Sublime Text 2.
Все сначала все отлично работает - местный хост нагружается нормально, три созданные статические страницы нагружаются нормально - а затем, бум, это просто ломается. Я почти на 100% положительный, что это происходит сразу после того, как я объединяю ветку главного вещества с филиалом Static-Pages. Статические страницы просто не будут загружаться (на любой ветке - я попытался переключиться вперед и назад, чтобы посмотреть, что вещи все еще работают на одной ветке, но нет).
вместо этого я получаю следующую ошибку:нет Маршрута совпадает [get] "/ home"
(одинаковое сообщение об ошибке применяется к двум двум страницам)
Вот полный след для домашней страницы:
Rails.root: C:/Sites/sample
actionpack (4.0.8) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
actionpack (4.0.8) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.0.8) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.0.8) lib/rails/rack/logger.rb:20:in `block in call'
activesupport (4.0.8) lib/active_support/tagged_logging.rb:68:in `block in tagged'
activesupport (4.0.8) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (4.0.8) lib/active_support/tagged_logging.rb:68:in `tagged'
railties (4.0.8) lib/rails/rack/logger.rb:20:in `call'
actionpack (4.0.8) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
rack (1.5.2) lib/rack/runtime.rb:17:in `call'
activesupport (4.0.8) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
actionpack (4.0.8) lib/action_dispatch/middleware/static.rb:64:in `call'
rack (1.5.2) lib/rack/sendfile.rb:112:in `call'
railties (4.0.8) lib/rails/engine.rb:511:in `call'
railties (4.0.8) lib/rails/application.rb:97:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
rack (1.5.2) lib/rack/content_length.rb:14:in `call'
rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service'
I:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
I:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
I:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'
Routes
Routes match in priority from top to bottom
Helper HTTP Verb Path Controller#Action
Path / Url
static_pages_home_url GET /static_pages/home(.:format) static_pages#home
static_pages_help_url GET /static_pages/help(.:format) static_pages#help
static_pages_about_url GET /static_pages/about(.:format) static_pages#about
.
Файл Marross.rb выглядит следующим образом (который соответствует учебнику):
Sample::Application.routes.draw do
get "static_pages/home"
get "static_pages/help"
get "static_pages/about"
end
.
файл static_pages_controller.rb выглядит следующим образом (который, опять же, соответствует учебнику):
class StaticPagesController < ApplicationController
def home
end
def help
end
def about
end
end
.
Я в полной потере на этом.
И я нашел это: Ошибка маршрутизации серверов Rails но маршруты там в моих маршрутах .rb Файл с использованием того же синтаксиса, что и в руководстве.
На внешнем шансе это необходимо, вот файл static_pages_spec.rb rspec использует для тестирования:
require 'spec_helper'
describe "StaticPages" do
describe "Home page" do
it "should have the content 'Sample App'" do
visit '/static_pages/home'
expect(page).to have_content('Sample App')
end
it "should have the title 'Home'" do
visit '/static_pages/home'
expect(page).to have_title("Ruby on Rails Tutorial Sample App | Home")
end
end
describe "Help page" do
it "should have the content 'Help'" do
visit '/static_pages/help'
expect(page).to have_content('Help')
end
it "should have the title 'Help'" do
visit '/static_pages/help'
expect(page).to have_title("Ruby on Rails Tutorial Sample App | Help")
end
end
describe "About page" do
it "should have the content 'About Us'" do
visit '/static_pages/about'
expect(page).to have_content('About Us')
end
it "should have the title 'About Us'" do
visit '/static_pages/about'
expect(page).to have_title("Ruby on Rails Tutorial Sample App | About Us")
end
end
end
. Решение
У вас нет маршрута для /home
, следовательно, зачем ваш No route matches [GET] "/home"
у вас есть маршрут для /static_pages/home
(и если вы введете это в ваш браузер URL, вы увидите вашу домашнюю страницу) (т. Е. Генеракодицетагкод)
Вы можете сопоставить localhost:3000/static_pages/home
в Static_Pages домой, добавив это на ваш /home
get '/home', to: 'static_pages#home'
.