续集Sinatra发布数据库参数

时间:2015-06-07 19:36:40

标签: ruby sqlite sinatra sequel

我正在努力构建一个非常简单的表格来为我的婚礼注册参加者。这有点草稿,因为我不知道我是否会使用Sinatra或Rails。我将设置预定的电子邮件,通知客人和我自己的婚礼细节。

所以无论如何,这里的代码是我无法使用insert语法将任何东西保存到数据库中。有些代码已被省略。这与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>

1 个答案:

答案 0 :(得分:0)

似乎第一个代码块中的$(document).ready(function() { function close_accordion_section() { $('.accordion .accordion-section-title').removeClass('active') .find('img').attr('src', 'http://www.scrubsandbeyond.com/app_themes/scrubsandbeyond/graphics/right.png'); $('.accordion .accordion-section-content').slideUp(300).removeClass('open'); } $('.accordion-section-title').click(function(e) { // Grab current anchor value var currentAttrValue = jQuery(this).attr('href'); if($(this).is('.active')) { close_accordion_section(); }else { close_accordion_section(); $(this).find('img').attr('src', 'http://www.scrubsandbeyond.com/app_themes/scrubsandbeyond/graphics/down.png'); // Add active class to section title $(this).addClass('active'); // Open up the hidden content panel $('.accordion ' + currentAttrValue).slideDown(300).addClass('open'); } e.preventDefault(); }); }); 与第二个代码块中的@attendees相同。在第一个代码块中,@attendees设置为顶级代码。在第二个代码块中,@attendees在路由中使用,该路由将是您正在使用的Sinatra类的实例。您可以尝试使用@attendees(常量)而不是实例变量。您还可以添加数据库记录器ATTENDEES以查看SQL Sequel发送数据库的内容。