Я не могу обслуживать статичные изображения на Ruby on Rails - PullRequest
7 голосов
/ 06 февраля 2010

Я пытаюсь получить доступ:

http://localhost:3000/images/Header.png

но я получаю эту ошибку:

Routing Error

No route matches "/images/Header.png" with {:method=>:get}

А вот мои маршруты:

ActionController::Routing::Routes.draw do |map|
  map.resources :worker_antpile_statuses

  map.resources :worker_antpiles

  map.resources :antcolonies

  map.resources :antpiles

  map.resources :clients
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
end

Ответы [ 2 ]

17 голосов
/ 06 февраля 2010

Статические ресурсы нужно поместить в папку / public, иначе вы получите ошибку маршрутизации. Для статического изображения на http://localhost:3000/images/Header.png вы хотите поместить Header.png в RAILS_ROOT/public/images

При наличии любого URL-адреса Rails проверяет файл, существующий по пути из каталога RAILS_ROOT / public, прежде чем пытаться сопоставить какие-либо маршруты.

Например, когда сервер Rails получает запрос на http://localhost:3000/users/1, он пытается отправить содержимое RAILS_ROOT/public/users/1. Если файла не существует, запускается процедура сопоставления маршрута.

1 голос
/ 06 февраля 2010

Последние две строки вашего routes.rb - это универсальные маршруты, которые будут соответствовать любым ранее непревзойденным URL-адресам. Закомментируйте эти две строки, и это сработает, что вы и хотите сделать, когда используете маршрутизацию RESTful во всех своих приложениях.

См. это превосходное руководство для всего, что вам нужно знать о маршрутах Rails.

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