Нет ошибки метода на Sinatra

После настройки моего config.ru и gemfile мой пост больше не хочет работать.

Во-первых, у меня должен быть DataMapper.setup в моем main.rb, и я не могу запускать какие-либо методы DataMapper в моем irb.

Во-вторых, всякий раз, когда я отправляю форму через 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

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 - это текст, который я помещаю в поле ввода формы перед отправкой.

Для репо на случай, если кто-то захочет протестировать его вживую ... https://github.com/thejourneydude/morsecode


person thank_you    schedule 17.12.2012    source источник
comment
а "asdfasdf":String откуда берется?   -  person shime    schedule 18.12.2012
comment
Это текст, который я ввел в поле ввода формы перед отправкой.   -  person thank_you    schedule 18.12.2012
comment
Я почти уверен, что вы делаете что-то не так с Data Mapper. Почему вы не можете использовать его в irb? Что такое resource.rb и что на линии 329? Я также рекомендую вам удалить свои учетные данные БД отсюда;)   -  person shime    schedule 18.12.2012
comment
Ха-ха, я убеждаюсь, что пароль, который я использую для моей БД, не подходит ни к одному другому паролю, который я использую, КОГДА-ЛИБО, но спасибо за совет. Я понятия не имею, что такое resource.rb. Его нет в моем каталоге. Мой irb сообщает мне, что мне нужно выполнить DataMapper.setup, который находится в моем config.ru (если я переместу его в main.rb, ошибка исчезнет, ​​и я смогу его использовать). Я все время думаю, что это проблема сборщика.   -  person thank_you    schedule 18.12.2012
comment
: D ок. Если вы поместите все, что необходимо для воспроизведения этого, и отправите его мне по почте или разместите здесь, я смогу узнать, что вызывает у вас эту проблему, после того, как немного посплю.   -  person shime    schedule 18.12.2012
comment
github.com/thejourneydude/morsecode   -  person thank_you    schedule 18.12.2012


Ответы (1)


Вы звоните Code.create params[:code]. Попробуйте Code.create :code => params[:code]. Таким образом, строка не заканчивается там, где datamapper ожидает хэш атрибута.

person mbj    schedule 19.12.2012