Ruby Sinatra上没有方法错误

Ruby Sinatra上没有方法错误,ruby,rubygems,sinatra,bundler,ruby-datamapper,Ruby,Rubygems,Sinatra,Bundler,Ruby Datamapper,在设置了config.ru和gemfile之后,我的帖子就不想再工作了 首先,我必须在main.rb中设置DataMapper.setup,并且我不能在irb中运行任何DataMapper方法 第二,每当我通过POST提交表格,要求将某些数据保存到我的db时,Sinatra会返回 NoMethodError at / undefined method `each' for "asdfasdf":String file: resource.rb location: attributes= lin

在设置了config.ru和gemfile之后,我的帖子就不想再工作了

首先,我必须在main.rb中设置DataMapper.setup,并且我不能在irb中运行任何DataMapper方法

第二,每当我通过POST提交表格,要求将某些数据保存到我的db时,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
Gemfile

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是我在提交表单之前在表单输入框中输入的文本


如果有人想现场测试回购协议

您正在调用
code.create参数[:code]
。尝试
code.create:code=>params[:code]
。这样字符串就不会在datamapper需要属性散列的地方结束。

“asdfasdf”:字符串
来自何处?它是我在提交之前放在表单输入框中的文本。我几乎可以肯定你在使用data mapper时出了问题。为什么你不能在irb中使用它?什么是
resource.rb
,第329行是什么?我还建议您从此处删除DB凭据;)哈哈,我确保我的数据库使用的密码不适合我使用的任何其他密码,但谢谢你的提示。我不知道什么是
resource.rb
。它不在我的目录里。我的irb告诉我需要执行DataMapper.setup,它在我的config.ru中(如果我将其移动到main.rb,错误就会消失,我可以使用它)。我一直认为这是捆绑机的问题。如果你把所有必要的东西都写在一个要点里,然后邮寄给我或者放在这里,我可以在我睡一会儿后找出是什么给你带来了麻烦。