我正在使用Ruby,Sinatra和MongoDB創建一個CRUD API。我不斷收到以下錯誤消息,我無法找出我做錯了:Sinatra:爲什麼這是一個語法錯誤?
SyntaxError: /yasi.rb:6: syntax error, unexpected =>, expecting '}' Yasi.connect {:server => "localhost", :db => "yasi"}^/yasi.rb:6: syntax error, unexpected ',', expecting '}' Yasi.connect {:server => "localhost", :db => "yasi"} ^
這裏是我的代碼如下所示:
require 'rubygems'
require 'sinatra'
require 'lib/yasi'
before do
Yasi.connect {:server => "localhost", :db => "yasi"}
end
get "/" do
@yasis = Yasi.find :all
erb :index
end
get "/new" do
erb :new
end
get "/delete/:id" do
Yasi.delete(params[:id])
redirect "/"
end
post "/" do
params.reject! {|k,v| k == "submit"}
Yasi.save(params)
redirect "/"
end
這裏的lib /雅思文件:
require 'rubygems'
require 'mongo'
require 'sinatra'
module Yasi
class << self
def connect(config)
@db = Mongo::Connection.new(config[:server],config[:port] || 27017).db(config[:db])
end
def find(search)
if search == :all
#return all
yasi = @db.collection("yasis").find.to_a
return nil_or_array(yasi)
else
return find_with_criteria(search)
end
end
def save(yasi)
stringify_keys(yasi)
#handle author first
if yasi["author"]
stringify_keys(yasi["author"])
author = @db.collection("authors").find_one(yasi["author"])
unless author
author = @db.collection("authors").save(yasi["author"])
end
yasi["author"] = author
end
@db.collection("yasis").save(yasi)
end
def delete(id)
victim = @db.collection("yasis").find_one(Mongo::ObjectID.from_stringid))
@db.collection("yasis").remove(victim) if victim
end
private
def find_with_criteria(search)
stringify_keys(search)
if search["author"]
author = @db.collection("authors").find_one stringify_keys(search["author"])
if author
search[:author] = author
yasi = @db.collection("yasis").find(search).to_a
return nil_or_array yasi
else
nil
end
else
yasi = @db.collection("yasis").find(search).to_a
return nil_or_array(yasi)
end
end
def stringify_keys(hash)
hash.each_key do |key|
hash[key.to_s] = hash.delete(key)
end
hash
end
def nil_or_array(result)
if result.size == 0
return nil
else
return result
end
end
end
end
你介意在這裏粘貼'lib/yasi'文件嗎? – vikram7
我不認爲這會導致問題,但肯定。 –