rake route - 没有路由匹配[GET]“/”错误

时间:2013-01-13 13:21:38

标签: ruby-on-rails routes

访问localhost:3000我得到了典型的:

  

没有路线匹配[GET]“/”

我不想看到错误的屏幕。我已经尝试使用localhost:3000/passbook/v1/passes/,但我仍然没有输入任何内容:

rake routes

得到了这个输出:

passbook GET    /passbook/v1/passes/:pass_type_identifier/:serial_number(.:format)                                           passbook/passes#show {:pass_type_identifier=>/([\w\d]\.?)+/}
             GET    /passbook/v1/devices/:device_library_identifier/registrations/:pass_type_identifier(.:format)                passbook/registrations#index {:pass_type_identifier=>/([\w\d]\.?)+/}
             POST   /passbook/v1/devices/:device_library_identifier/registrations/:pass_type_identifier/:serial_number(.:format) passbook/registrations#create {:pass_type_identifier=>/([\w\d]\.?)+/}
             DELETE /passbook/v1/devices/:device_library_identifier/registrations/:pass_type_identifier/:serial_number(.:format) passbook/registrations#destroy {:pass_type_identifier=>/([\w\d]\.?)+/}
passbook_log POST   /passbook/v1/log(.:format)                                                                                   passbook/logs#create

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

你还没有告诉Rails你的根路径是什么。你可以这样说

root to: "passes#show"

在config / routes.rb中。之后,您应该在rake routes输出中看到这一点:

root      /      passes#show

然后它应该工作!


附加提示

对于您的问题,这可能是最重要的,但遵循测试驱动的方法,您应首先编写规范:

describe "custom routing" do
    it "shows the root page" do
        get("/").should route_to("passes#show")
    end
end

使用RSpec。通过执行$ rspec在编写路径本身之前在控制台中运行测试,并在正确的位置看到测试失败。

然后,实现上面的路由,再次运行测试 - 它应该工作。这样,您可以确保编写了足够的代码来满足您的要求,并确保您编写的代码可以让您访问根路径。

答案 1 :(得分:0)

这是您从其他人那里继承的rails应用吗?

根据您提供的rake routes输出,如果您替换localhost:3000/passbook/v1/passes/<EXAMPLE_PASS_TYPE_IDENTIFIER>/<EXAMPLE_SERIAL_NUMBER>和{{1},则EXAMPLE_PASS_TYPE_IDENTIFIER之类的网址应根据输出第一行中的规则生效使用数据库中的有效值。

EXAMPLE_SERIAL_NUMBER的错误消息No route matches [GET] "/是因为localhost:3000输出中没有root的映射。

您可以修改rake routes文件,并在文件底部添加以下行:

config/routes.rb

例如:

root :to => "<controller_name>#<action_name>"

如果root :to => "passbook/index" 采用passbooks_contoller.rb方法。

最好了解有关rails routing from the documentation的更多信息。更好的方法是通过the Rails Tutorial来深入了解rails框架。