访问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
我该如何解决这个问题?
答案 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框架。