Как сохранить данные в Activerecord с помощью модульного приложения Sinatra? - PullRequest
0 голосов
/ 19 марта 2020

Я новичок в Синатре. Я хочу использовать модульный стиль в моем приложении.

Я хочу, чтобы пользователи вводили некоторые тексты, которые будут сохранены в модели под названием "Tweet". Однако при отправке текста постоянно отображается сообщение об ошибке «NameError - неинициализированная константа MiniDemo :: Tweet:».

Ниже приведен config.ru:

require './app'

run MiniDemo

В приложении .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

Файл 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

Не могли бы вы дать мне предложение? Большое спасибо.

1 Ответ

1 голос
/ 19 марта 2020

Я нашел причину. Я забыл требовать модель Tweet в файле app.rb. Что я сделал, так это включил следующую строку в файл app.rb. require_relative './models/tweet.rb'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...