Рельсы поднимают InvalidURIError - PullRequest
0 голосов
/ 15 ноября 2011

Когда я использую redirect_to 'index' в моем контроллере, я получаю следующую ошибку. -на Ruby 1.8.7 и Rails 3.1.1-

Started GET "/presentations/1" for 127.0.0.1 at Tue Nov 15 01:48:42 +0200 2011
  Processing by PresentationsController#show as HTML
  Parameters: {"id"=>"1"}
Redirected to http://localhost:3000index
Completed 302 Found in 2ms
[2011-11-15 01:48:42] ERROR URI::InvalidURIError: the scheme http does not accept registry part: localhost:3000index (or bad hostname?)

А вот как это выглядит в маршрутах.rb

..
get 'about_us' => 'presentations#index', :as => 'about_us'
..
resources :presentations

Очевидно, он пытается перенаправить на http://localhost:3000index вместо http://localhost:3000/presentations/index, но я не мог понять почему. Если я использую redirect_to presentations_path или redirect_to :controller => 'presentations', :action => 'index', все работает нормально, но почему это происходит? Я думал, что смогу использовать redirect_to без определения какого-либо параметра контроллера, если он ссылается на тот же контроллер с существующей настройкой, или я ошибаюсь?

1 Ответ

2 голосов
/ 15 ноября 2011

В соответствии с вашим текущим файлом маршрутов, вы говорите

/about_us routes to {:controller => :presentations, :action => :index}

Итак, если бы вы набрали

redirect_to '/index'

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

Кроме того, http://guides.rubyonrails.org/routing.html может быть отличным ресурсом для начала работы.

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