【问题标题】:Simplest way to add Ruby script to a static website for AJAX将 Ruby 脚本添加到 AJAX 的静态网站的最简单方法
【发布时间】:2011-10-01 09:53:21
【问题描述】:

我有一个简单的投资组合网站,它只是一组静态 HTML 文件和一些 jQuery。

现在我正在尝试添加一个通过 AJAX 提交的简单联系表单,因此我需要以某种方式在服务器端处理请求。

整个事情都在一个 VPS 上运行,许多其他 Rails 应用程序都在 nginx 上。如果我安装了 PHP,只需添加一个简单的 PHP 文件并通过 AJAX 直接调用它就很容易了,但我真的不知道如何在 Ruby 中做到这一点。

我基本上有

server {
    listen 80;
    server_name example.com;
    root /var/apps/example/com;
}

对于静态网站,现在我需要以某种方式说,该文件 contact.rb 应该作为 Ruby 文件执行。

我认为使用 Sinatra 可能是个好主意,但我不知道如何将其绑定/路由到域上的特定位置。例如,表单可能会向 example.com/contact 提交 AJAX 请求,然后它会发送电子邮件。

问题是,我可以处理请求的所有其他 Rails 应用程序都在不同的域上运行,所以我不能直接使用 AJAX 调用其他应用程序,我需要创建一个此域上的单独脚本。

我知道我可以重写整个静态网站以在 Sinatra 上运行,这样可以消除这个问题,但我更喜欢用一些简单的方法来做这件事,因为这只是为了一个简单的联系表格。

【问题讨论】:

    标签: ruby nginx sinatra


    【解决方案1】:

    在 apache httpd.conf 中:

    AddHandler cgi-script .rb
    选项 ExecCGI

    #!/usr/bin/env ruby
    # in test.rb
    require 'cgi'
    puts "Content-Type: text/html \n\n" #wichtig
    
    params = CGI.new
    query = params['q'] #simple as that!
    
    $stderr.puts "Remote Addr: #{params.remote_addr}"
    

    【讨论】:

      【解决方案2】:

      另一种选择是使用联系表单处理服务,例如 EmailMeForm。似乎有几个类似的系统可用。当然,它不像滚动自己的系统那样“酷”。但它可以用于您的静态网站。

      http://www.emailmeform.com/

      【讨论】:

        【解决方案3】:

        使用 sinatra 并了解如何定义路线。这正是您正在寻找的。​​p>

        【讨论】:

        • 我知道如何设置路由,问题是我需要将整个 sinatra 应用程序设置在 nginx 域上的特定路径上。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        • 1970-01-01
        • 2011-07-26
        • 1970-01-01
        • 2011-02-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多