【问题标题】:No Method Error on SinatraSinatra 上没有方法错误
【发布时间】: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


【解决方案1】:

您正在呼叫Code.create params[:code]。试试Code.create :code => params[:code]。这样,字符串就不会出现在 datamapper 期望属性散列的位置。

【讨论】:

    猜你喜欢
    • 2011-11-10
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 2015-06-07
    • 2018-04-05
    • 2023-03-29
    相关资源
    最近更新 更多