【问题标题】:Sequel Sinatra Post Database paramsSequel Sinatra Post 数据库参数
【发布时间】:2015-08-22 05:48:45
【问题描述】:

我正在尝试构建一个非常简单的表单,用于为我的婚礼注册参加者。这有点草稿,因为我不知道我会使用 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>

【问题讨论】:

    标签: ruby sqlite sinatra sequel


    【解决方案1】:

    第一个代码块中的@attendees 似乎与第二个代码块中的@attendees 不同。在第一个代码块中,@attendees 设置在看似顶级的代码中。在第二个代码块中,@attendees 用于路由内,该路由将成为您正在使用的 Sinatra 类的一个实例。您可以尝试使用ATTENDEES(常量)而不是实例变量。您还可以添加数据库记录器require 'logger'; DB.loggers &lt;&lt; Logger.new($stdout) 以查看 SQL Sequel 正在向数据库发送什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 2015-01-29
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      • 1970-01-01
      相关资源
      最近更新 更多