Rails没有路由匹配[GET]“/”

时间:2013-06-22 15:55:15

标签: ruby-on-rails

我的Rails应用程序名称是Card。我修改了路由并从公共目录中删除了index.html。我访问主页时仍然看到The page you were looking for doesn't exist.。 Rake路由正确显示根路由。

我正在使用Passenger和Apache。

root@emaillenin:/var/emaillenin/rails/card# cat config/routes.rb
Card::Application.routes.draw do
root :to => "home#index"
end
root@emaillenin:/var/emaillenin/rails/card# ls public/
404.html  422.html  500.html  favicon.ico  robots.txt
root@emaillenin:/var/emaillenin/rails/card# rake routes
root  / home#index
root@emaillenin:/var/emaillenin/rails/card# ls app/controllers/
application_controller.rb  home_controller.rb
root@emaillenin:/var/emaillenin/rails/card# cat app/controllers/home_controller.rb
class HomeController < ApplicationController
  def index
  end
end
root@emaillenin:/var/emaillenin/rails/card# cat app/views/home/index.html.erb
<h1>Home#index</h1>
<p>Find me in app/views/home/index.html.erb</p>
<h1>Hello, Rails!</h1>
root@emaillenin:/var/emaillenin/rails/card# bundle exec rake assets:precompile
/usr/local/rvm/rubies/ruby-2.0.0-p195/bin/ruby /usr/local/rvm/gems/ruby-2.0.0-p195@global/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets
root@emaillenin:/var/emaillenin/rails/card# cat config/environments/production.rb | grep config.assets.compile
  config.assets.compile = true
root@emaillenin:/var/emaillenin/rails/card#

这是我在Apache错误日志中看到的:ActionController::RoutingError (No route matches [GET] "/"):

当我rails server并通过3000端口访问我的主页时,我看到一个错误页面 - http://pastebin.com/1eEU3egt

即使执行bundle exec rake assets:precompile后,我也会看到相同的错误页面。

即使将config.assets.compile更改为true,也会导致相同的错误。

有什么方法可以解决这个问题?

1 个答案:

答案 0 :(得分:2)

来自另一个SO question

默认情况下,Rails假定您在生产环境中预编译了文件,如果您想在生产环境中使用实时编译(在运行时编译资产),则必须将 config.assets.compile设置为true

# config/environments/production.rb
...
config.assets.compile = true
...

当您使用预编译资产但是有任何丢失的预编译文件时,您可以使用此选项回退到Sprockets。

如果config.assets.compile选项设置为false且缺少预编译文件,则会收到“AssetNoPrecompiledError”,指示丢失文件的名称。