首页 > 解决方案 > 如何使用模块化 Sinatra APP 将数据存储到 Activerecord 中?

问题描述

我是新来的西纳特拉。我想在我的应用程序中使用模块化样式。

我希望用户输入一些文本,这些文本将存储到一个名为“Tweet”的模型中。但是,当我提交文本时,它一直显示错误消息“NameError - 未初始化的常量 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__ == $0
        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

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

标签: rubysinatra-activerecord

解决方案


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


推荐阅读