Возникли проблемы с совместными занятиями - PullRequest
0 голосов
/ 23 апреля 2009

Я работаю над простым назначением 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 ]

1 голос
/ 23 апреля 2009

Вы храните 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
0 голосов
/ 23 апреля 2009

Хорошо, так что в отношении этого теперь запросов к базе данных это было мое решение. На переменные не ссылались должным образом.

def new_pizza(size,topping1,topping2,name)
        query = "INSERT INTO pizza VALUES(0,\"#{size}\",\"#{topping1}\",\"#{topping2}\",\"#{name}\")"
        @dbh.query_db(query)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...