路线在西纳特拉给404

时间:2016-01-01 21:29:17

标签: ruby routes sinatra

我刚刚开始研究sinatra,现在我的应用程序无法导航到路由并从db获取数据,我总是得到404.这就是我正在做的。

文件结构

app
|---->helpers
|----->models
|----->public
|----->routes
|        |------->candidate.rb 
|        |------->init.rb
|----->app.rb
|----->config.ru

config.ru

require './app'
run MyApp

app.rb

require 'json'
require 'sinatra'
require 'data_mapper'
require 'dm-migrations'
require 'sinatra/cross_origin'
require 'logger'
require './models/init'
require './helpers/init'
require './routes/init'


class MyApp < Sinatra::Base
configure :development do
  enable :cross_origin
  DataMapper::Logger.new($stdout, :debug)
  DataMapper.setup(
    :default,
    'mysql://root:@localhost/hackerrank'
  )
end
get '/' do
  File.read(File.join('public', 'index.html'))
end

DataMapper.finalize
end

命令

bundle exec rackup -p 4567 config.ru 
candidate.rb中的

api是正确的,但如果我尝试以http://localhost:4567/#/recruiter的身份访问资源,我将获得404。 我无法弄清楚我在这里做错了什么。

2 个答案:

答案 0 :(得分:0)

你得到的是404,因为GET'/'仅适用于根页面而你正在尝试加载/招募人员。您可以将其更改为GET'/:pagename',这样可以立即解决404问题。

答案 1 :(得分:0)

您的代码库看起来很好。当您从终端运行Sinatra应用程序时,每个请求都会显示一个日志行,例如

127.0.0.1 - - [02/Jan/2016 00:43:53] "GET / HTTP/1.1" 200 - 0.0033

确保您看到的HTTP动词和/或端点/路由是您期望的那个(也许您在访问资源时发出POST请求?)