如何使用模块化的 Sinatra APP 将数据存储到 Activerecord 中?

How to store data into Activerecord with a modular Sinatra APP?

我是 Sinatra 的新手。我想在我的应用程序中使用模块化风格。

我希望用户输入一些文本,这些文本将存储到名为 "Tweet" 的模型中。 但是,当我提交文本时,它一直显示错误消息"NameError - uninitialized constant MiniDemo::Tweet:"。

config.ru如下:

require './app'

run MiniDemo

在app.rb中,代码如下:

require 'sinatra/base'

require_relative './routes/simple.rb'


class MiniDemo < Sinatra::Base

    set :views, __dir__ + '/views'
    set :public_folder, __dir__ + '/public'

    if __FILE__ == [=11=]
        run!
    end
end

routes文件夹中的simple.rb文件如下:

require 'sinatra/base'


class MiniDemo < Sinatra::Base
    get '/' do
        # "Hello from my Mini Demo.\nNew Test."
        erb :index
    end

    post '/tweet' do
        Tweet.create(content: params[:content])
    end
end

erb文件如下:

<!DOCTYPE html>
    <html>

        <head>
            <script src='javascripts/twitter.js'></script>
        </head>

        <body>
            <form method="POST" action="/tweet">
                <p>Your Tweet: <input type="text" name="content"></p>
                <input type="submit" id='btn-submit'  value="Tweet">
            </form>

        </body>

    </html>

推文模型是:

require 'sinatra/activerecord'
require 'sinatra/base'

class Tweet < ActiveRecord::Base
end

你能给我一些建议吗? 非常感谢。

找到原因了。我忘记在 app.rb 文件中要求模型推文。我所做的是在 app.rb 文件中包含以下行。 require_relative './models/tweet.rb'