Ошибка маршрутизации во время "Ruby on Rails-Tutorial" - PullRequest
1 голос
/ 03 апреля 2012

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

Я делаю главу 3 учебника по Ruby on Rails, работаю со статическими страницами. Когда я хочу открыть их на локальном хосте, в браузере появляется «Ошибка маршрутизации».

В данный момент My Ruby имеет версию 1.9.3. Мой Rails в настоящее время на версии 3.2.

Я пробовал:

  • перезапуск сервера
  • сохранение всех файлов снова
  • проверка любых проблем в static_pages_controller.rb
  • проверка любых проблем в маршрутах. Rb
  • проверка любых проблем в static_oages_spec.rb

Также нет ошибок в HTML-коде одной статической страницы. И я не могу найти больше помощи ни в этом руководстве, ни в других вопросах здесь, в StackOverflow.


Edit:

Это фактическое сообщение об ошибке из браузера:

Ошибка маршрутизации

Не найдено ни одного маршрута [GET] "/ static_pages / home" Попробуйте запустить Рейк-маршруты для получения дополнительной информации о доступных маршрутах.

если я перейду к http://localhost:3000/static_pages/home, к одной из трех моих статических страниц.

Это маршруты. Rb:

SampleApp::Application.routes.draw do

get "static_pages/home"

get "static_pages/help"

get "static_pages/about"

end

Также я попытался "1040 *" в терминале. Это результат:

home_static_pages GET    /static_pages/home(.:format)  static_pages#home
 help_static_pages GET    /static_pages/help(.:format)  static_pages#help
about_static_pages GET    /static_pages/about(.:format) static_pages#about
      static_pages POST   /static_pages(.:format)       static_pages#create
  new_static_pages GET    /static_pages/new(.:format)   static_pages#new
 edit_static_pages GET    /static_pages/edit(.:format)  static_pages#edit
                   GET    /static_pages(.:format)       static_pages#show
                   PUT    /static_pages(.:format)       static_pages#update
                   DELETE /static_pages(.:format)       static_pages#destroy

И это сообщение об ошибке, которое сервер дает мне:

Started GET "/static_pages/home.html" for 127.0.0.1 at 2012-04-03 13:23:54 +0200

ActionController::RoutingError (No route matches [GET] "/static_pages/home.html"):
  actionpack (3.2.3) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.3) lib/rails/rack/logger.rb:26:in `call_app'
  railties (3.2.3) lib/rails/rack/logger.rb:16:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/request_id.rb:22:in `call'
  rack (1.4.1) lib/rack/methodoverride.rb:21:in `call'
  rack (1.4.1) lib/rack/runtime.rb:17:in `call'
  activesupport (3.2.3) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
  rack (1.4.1) lib/rack/lock.rb:15:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/static.rb:62:in `call'
  railties (3.2.3) lib/rails/engine.rb:479:in `call'
  railties (3.2.3) lib/rails/application.rb:220:in `call'
  rack (1.4.1) lib/rack/content_length.rb:14:in `call'
  railties (3.2.3) lib/rails/rack/log_tailer.rb:14:in `call'
  rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service'
  /Network/Servers/pluto.kayoom.lan/Users/benediktkrebs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
  /Network/Servers/pluto.kayoom.lan/Users/benediktkrebs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
  /Network/Servers/pluto.kayoom.lan/Users/benediktkrebs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'

Ответы [ 9 ]

3 голосов
/ 06 августа 2012

Если вы используете Spork, вы должны перезапустить Spork, чтобы ваши тесты учитывали изменения в конфигурационных файлах, таких как route.rb, которые предварительно загружены Spork, поэтому не обновляются автоматически.

  1. Стоп Спорк (Ctrl + C)
  2. Запустите Spork снова (в комплекте exec spork)

Источник: это источник этой информации msgstr "после изменения файла, включенного в загрузку prefork (например, rout.rb ), вам придется перезапустить сервер Spork, чтобы загрузить новую среду Rails . Если ваши тесты не проходят, когда вы считаете, что они должны пройти, выйдите из Spork-сервера с помощью Control-C и перезапустите его

3 голосов
/ 03 апреля 2012

Попробуйте это:

match "/static_pages/home" => "static_pages#home", :via => :get
match "/static_pages/help" => "static_pages#help", :via => :get
match "/static_pages/about" => "static_pages#about", :via => :get

Добавить в маршруты, перезагрузить сервер и обновить браузер.

0 голосов
/ 03 апреля 2014

Как только вы измените формат отображения с get на match, вам больше не понадобятся static_pages, просто перейдите прямо к localhost:3000/pagename, например, localhost:3000/about

0 голосов
/ 31 октября 2012

проверьте ваш адрес http: //, особенно если вы находитесь на localhost: 3000 / path или localhost: 3000 / path1 / path2 и т. Д.

0 голосов
/ 24 августа 2012

В

config / rout.rb

раскомментировать

root: to => 'welcome # index'

0 голосов
/ 09 июля 2012

От Ruby 2 к Ruby 3 есть некоторые отличия, но найти документацию для 3 нелегко.Только для этого должно быть учебное пособие: практические различия между рельсами 2 и 3. Руководство, предоставляемое при загрузке Ruby на рельсах, - это «Книга рубинов», но это уже не хорошо.По крайней мере, он должен содержать совет в начале главы 19.

0 голосов
/ 11 апреля 2012

Если вы посмотрите в файле config.rb в конфигурации, вы, вероятно, обнаружите, что в / home отсутствует буква 'e'. Добавьте это, и вы золотой. Или зеленый. Или что угодно :) 1001 *

0 голосов
/ 03 апреля 2012

У меня было несколько проблем при работе с Rails Tutorial, и это помогло мне ознакомиться с авторским репозиторием GitHub: https://github.com/railstutorial

Найдите файл, над которым вы работаете, и сравните его построчно,Или просто вырежьте и вставьте полный файл и посмотрите, запустится ли он, а затем отследите вашу ошибку.

0 голосов
/ 03 апреля 2012

в вашем файле rout.rb есть проблемы, используйте либо стиль RESTful:

resource :static_pages do 
  collection do 
    get :home
    get :help
    get :about
  end 
end

, либо стиль не RESTful:

match "static_pages/home", :controller => "static_pages", :action => "home"
match "static_pages/help", :controller => "static_pages", :action => "help"
match "static_pages/about", :controller => "static_pages", :action => "about"

, более подробную информацию см. В официальном руководстве: http://guides.rubyonrails.org/routing.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...