ruby - 如何使用模块化 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
你能给我一些建议吗?非常感谢。
解决方案
我找到了原因。我忘了在 app.rb 文件中要求模型 Tweet。我所做的是在 app.rb 文件中包含以下行。require_relative './models/tweet.rb'
推荐阅读
- reactjs - 浅渲染功能性无状态组件-react
- php - PHP 格式问题中的 POST 数据
- c++ - 使用 std::copy 时,向量上的 ostream 重载会引发错误
- docker - 无法在 Kubernetes 中更新节点注释
- c# - C#如何将数组绑定到按钮数组
- r - 如何在 glm Tweedie 回归模型中使用 emmeans?
- python - 使用领先和滞后窗口函数的 SQL 案例语句的 Python Pandas 等效项
- javascript - 带有 CSS 的警报框
- javascript - 根据命令输入从目录中抓取随机图像
- hadoop - 将 Hadoop 集群从 Big Insights 迁移到 Cloudera