【问题标题】:route giving 404 in sinatra在 sinatra 中给出 404 的路线
【发布时间】:2016-04-06 05:47:37
【问题描述】:

我刚刚开始处理sinatra,现在我的应用程序无法导航到路由并从数据库获取数据,我总是得到 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 。 我无法弄清楚我在这里做错了什么。

【问题讨论】:

  • 您是否阅读过有关在 Sinatra 中使用 ERB 的文档? ERB 或 HAML 是在 Sinatra 应用程序中呈现页面的首选方法。
  • 我正在经历所有这些,如果您能帮助我解决上述问题,我将不胜感激。
  • 另外,如果您是 Ruby 新手,我建议您使用 ActiveRecord 或 Sequel 作为 ORM 而不是 DataMapper。当我拿起 Ruby 时,我用了 3 个黑暗的月份使用数据映射器,然后才转向 AR,它更容易使用。

标签: ruby routes sinatra


【解决方案1】:

您会收到 404,因为 GET '/' 仅适用于根页面并且您正在尝试加载 /recruiter。您可以将其更改为 GET '/:pagename' 并立即解决 404 问题。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-12
      • 2010-10-22
      • 2019-12-11
      • 2011-07-02
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 2011-12-20
      相关资源
      最近更新 更多