我正在努力构建一个非常简单的表格来为我的婚礼注册参加者。这有点草稿,因为我不知道我是否会使用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>
答案 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发送数据库的内容。