我正在处理一个简单的ruby任务,我收到内部服务器错误。我假设这是我如何将我的课程捆绑在一起。
编辑:我更新了它,现在我只是没有插入数据库。问题在于我称之为“result = @ dbh.query(query)”
这是我的第一页:
#!/usr/local/bin/ruby
require 'cgi'
require 'mysql'
load 'pizzaClass.cgi'
cgi = CGI.new
puts "Content-type: text/html\n\n"
db = Database_obj.new
pizza = Pizza.new(db)
submit = cgi['submit']
size = cgi['size']
topping1 = cgi['topping1']
topping2 = cgi['topping2']
name = cgi['name']
if submit == 'Order'
pizza.new_pizza(size,topping1,topping2,name)
end
puts <<HTML
<form name="pizza" id="pizza" method="post" action="db.cgi">
<select name="size" id="size">
<option value="small">Small</option>
<option value="medium">Medium</option>
<option value="large">Large</option>
</select>
<br /><br />
<label for="topping1">Topping 1: <input type="text" name="topping1" id="topping1" /></label>
<br /><br />
<label for="topping2">Topping 2: <input type="text" name="topping2" id="topping2" /></label>
<br /><br />
<label for="name">Name: <input type="text" name="name" id="name" /></label>
<br /><br />
<input type="submit" name="submit" id="submit" value="Order" />
</form>
HTML
这是我的pizzaClass.cgi
class Database_obj
attr_accessor :dbh
def initialize()
@dbh = Mysql.real_connect("localhost", "ljackson42001", "password", "ljackson42001")
end
def query_db(query)
result = @dbh.query(query)
end
def get_results()
result.each do |row|
puts row
end
end
end
class Pizza
def initialize(db)
@dbh=db
end
def new_pizza(size,topping1,topping2,name)
query = "INSERT INTO pizza VALUES(0,#{size},#{topping1},#{topping2},#{name})"
@dbh.query_db(query)
puts "two"
end
end
任何帮助将不胜感激,
列维
答案 0 :(得分:1)
您只会将result
存储在query_db
中的本地变量中,因此无法在get_results
中访问该变量。您可以通过切换到使用实例变量来轻松解决此问题。实例变量以@
符号开头。
def query_db(query)
@result = @dbh.query(query)
end
def get_results()
@result.each do |row|
puts row
end
end
答案 1 :(得分:0)
好的,所以关于它现在查询数据库这是我的解决方案。变量没有被正确引用。
def new_pizza(size,topping1,topping2,name)
query = "INSERT INTO pizza VALUES(0,\"#{size}\",\"#{topping1}\",\"#{topping2}\",\"#{name}\")"
@dbh.query_db(query)
end