我不能在Ruby on Rails上提供静态图像

时间:2010-02-06 04:32:13

标签: ruby-on-rails

我正在尝试访问:

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 个答案:

答案 0 :(得分:17)

静态资产需要进入/ 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 :(得分:1)

routes.rb的最后两行是与所有以前不匹配的网址匹配的全能路线。 注释掉这两行并且它将起作用,这是你在所有应用程序中使用RESTful路由时想要做的事情。

有关Rails路由的所有信息,请参阅this excellent guide