2009-04-23 7 views
0

간단한 루비 지정 작업을하고 있는데 내부 서버 오류가 발생합니다. 나는 그것이 내가 함께 수업을하는 방법에 있다고 가정하고있다.함께 수업을 진행하는 데 약간의 어려움이 있습니다.

편집 : 나는 그것을 업데이트하고 지금은 데이터베이스에 삽입하지 않습니다. 이것은 내 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 

모든입니다

#!/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 

: 나는 "결과 = @의 dbh.query (쿼리)"

이 내 첫 번째 페이지입니다 호출 할 경우 문제의 요점은 도움 당신은에서 지역 변수에 result를 저장,
레위

답변

0

좋아요, 그럼 이제는 데이터베이스를 쿼리하면 내 해결책이되었습니다. 변수가 제대로 참조되지 않았습니다.

def new_pizza(size,topping1,topping2,name) 
     query = "INSERT INTO pizza VALUES(0,\"#{size}\",\"#{topping1}\",\"#{topping2}\",\"#{name}\")" 
     @dbh.query_db(query) 
end 
1

을 감상 할 수있다이므로 get_results에 액세스 할 수 없습니다. 인스턴스 변수를 사용하여 쉽게 전환 할 수 있습니다. 인스턴스 변수는 @ 기호로 시작합니다.

def query_db(query) 
    @result = @dbh.query(query) 
end 

def get_results() 
    @result.each do |row| 
      puts row 
    end 
end 
+0

내 문제는 아니지만 나머지는 도움이되었습니다. 감사! – Levi

관련 문제