【发布时间】:2012-12-17 23:16:19
【问题描述】:
设置我的 config.ru 和 gemfile 后,我的帖子不再需要工作。
首先,我必须在我的 main.rb 中有我的 DataMapper.setup,我不能在我的 irb 中运行任何 DataMapper 方法。
其次,每当我通过 POST 提交表单以将某些数据保存到我的数据库时,Sinatra 返回...
NoMethodError at /
undefined method `each' for "asdfasdf":String
file: resource.rb
location: attributes=
line: 329
main.rb
#Required Gems
require 'sinatra'
require 'data_mapper'
DataMapper.setup(:default, ENV['DATABASE_URL'] || 'postgres://host:password!@localhost
/blog_development')
#Database Migration
class Code
include DataMapper::Resource
property :id, Serial
property :code, String, :required => true
property :translation, String
property :completed_at, DateTime
end
#Set up Migration
DataMapper.finalize
#Routes Section
get '/' do
@codes = Code.all
slim :index
end
#Get Code
get '/:code' do
@morse_code = params[:code]
slim :code
end
#POST Code
post '/' do
@code = Code.create params[:code]
redirect to('/')
end
宝石文件
source :rubygems
gem "sinatra", "~> 1.3.3"
gem "data_mapper", "~> 1.2.0"
gem "slim", "~> 1.3.4"
gem "dm-postgres-adapter", "~> 1.2.0"
config.ru
require 'bundler'
Bundler.require
require './main'
DataMapper.setup(:default, ENV['DATABASE_URL'] || 'postgres://host:password@localhost
/blog_development')
run Sinatra::Application
注意 asdfasdf 是我在提交之前在表单输入框中输入的文本。
如果有人想现场测试它的回购...https://github.com/thejourneydude/morsecode
【问题讨论】:
-
和
"asdfasdf":String来自哪里? -
是我提交之前在表单输入框中输入的文字。
-
我几乎可以肯定您的数据映射器有问题。为什么不能在irb中使用?
resource.rb是什么,第 329 行是什么?我还建议您从此处删除您的数据库凭据;) -
哈哈,我确保我用于数据库的密码不适合我使用的任何其他密码,但感谢您的提示。我不知道
resource.rb是什么。它不在我的目录中。我的 irb 告诉我要么我需要做 DataMapper.setup,它在我的 config.ru 中(如果我把它移到 main.rb 错误就会消失,我可以使用它)。我一直认为这是一个打包程序问题。 -
:没问题。如果您将重现此问题所需的所有内容都放在一个要点中并将其邮寄给我或将其放在这里,我可以在我睡一觉后找出给您带来麻烦的原因。
标签: ruby rubygems sinatra bundler ruby-datamapper