2013-07-16 31 views
0

我想用下面的代碼保存在我的數據庫中的網頁的URL:綁定URI參數使用Ruby

def add_page(database, url, title) 
    sql = "insert into paginas(url, titulo) values(:url, :titulo)" 
    database.execute(sql, "url" => url, "titulo" => title) 
end 

但我得到這個錯誤:

/home/cris/.rvm/gems/ruby-2.0.0-p247/gems/sqlite3-1.3.7/lib/sqlite3/statement.rb:39:in `bind_param': can't prepare URI::HTTP (RuntimeError) 

任何方式解決這個問題?

PS:下面的代碼工作正常:

def add_page(database, url, title) 
    sql = "insert into paginas(url, titulo) values('#{url}', '#{title}')" 
    database.execute(sql) 
end 

回答

1

我猜SQLite的司機不知道如何將URI::HTTP轉換爲SQLite的原生型。您可以通過將URI轉換回字符串來幫助它:

database.execute(sql, "url" => url.to_s, "titulo" => title) 
+0

謝謝!奇蹟般有效。也解釋了爲什麼第二個代碼片段正常工作。 – crbelaus