Michael Hartl Rails Учебное пособие Глава 3 Ошибки маршрутизации на локальном сервере

StackOverflow https://stackoverflow.com//questions/25026256

  •  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
.

Я в полной потере на этом.

Я нашел это: Я дважды проверил, и да, я нахожусь в C: \ сайты \ образец, когда я запускаю сервер, поэтому я не думаю, что это проблема, если только что-то не происходит после того, как я могу изменить, что мне нужно Запустите сервер?

И я нашел это: Ошибка маршрутизации серверов 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'
.

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