2015-06-07 28 views
0

我想建立一個非常簡單的形式爲我的婚禮註冊與會者。這有點草稿,因爲我不知道我是否會使用Sinatra或Rails。我將設置預定的電子郵件通知客人和我自己的婚禮細節。續集西納特拉郵政數據庫參數

因此,無論如何這裏是代碼我不能得到任何東西堅持使用插入語法的數據庫。一些代碼已被省略。這只是關於POST問題。

require "sinatra" 
    require "sequel" 
    require "sqlite3" 


    DB = Sequel.connect('sqlite://pauley_wedding.db') 

    DB.create_table! :attendees do 
    primary_key :id 
    string :fname 
    string :lname 
    string :phone 
    string :email 
    end 

    @attendees = DB[:attendees] 

這裏是路由/觀點:

get '/' do 
    erb :index, :layout => :layout 
    end 

    get '/about' do 
    erb :about, :layout => :layout 
    end 


    get '/rsvp' do 
     erb :rsvp, :layout => :layout 
    end 

    post '/rsvp' do 
     @attendees.insert(:fname => params[:fname], :lname =>          params[:lname], :phone => 
    params[:phone], :email => params[:email]) 
redirect '/confirm_rsvp' 
    end 

    get '/confirm_rsvp' do 
     erb :confirmation, :layout => :layout 
    end 

    get '/admin' do 
     erb :admin, :layout => :layout 
     @attendees 
    end 

    @@rsvp 
    <style> 
    h1 { 
     color: tan; 
    } 

    .lead { 
     color: tan; 
    } 
    </style> 
    <h1><p class="lead">Sign up!</p></h1> 
    <form action="/rsvp" method="POST"> 
    <p class="lead">First Name:</p><br /><input type="text" name="fname"><br /><br /> 
    <p class="lead">Last Name:</p><br /><input type="text" name="lname"><br /> <br /> 
    <p class="lead">Phone Number:</p><br /><input type="text" name="phone"><br  /><br /> 
    <p class="lead">Email Address:</p><br /><input type="text" name="email"> 
    <hr /> 
    <button class="btn btn-primary" input type="submit">Sign Up!</button> 

    </form> 

回答

0

它不會出現像@attendees在第一碼塊是相同的第二碼塊@attendees。在第一個代碼塊中,@attendees被設置爲看起來是頂級代碼。在第二個代碼塊中,@attendees在路徑中使用,該路線將成爲您正在使用的Sinatra類的實例。您可以嘗試使用ATTENDEES(常量)而不是實例變量。您還可以添加數據庫記錄器require 'logger'; DB.loggers << Logger.new($stdout)以查看SQL Sequel發送數據庫的內容。