让我的课程一起工作有些麻烦

时间:2009-04-23 15:17:43

标签: ruby attributes class

我正在处理一个简单的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

任何帮助将不胜感激,
列维

2 个答案:

答案 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