表单操作下载ruby脚本而不是运行它

时间:2014-08-12 14:13:53

标签: html ruby forms haml

我正在尝试从HTML(haml)制作的表单发送电子邮件。我创建了一个名为mailto.rb的脚本,我将其设置为表单内的一个动作。问题是,不是在里面运行代码,当我按下提交时,它只是下载文件(mailto.rb)。

%form{:action => "mailto.rb", :method => "post"}

这是表单开头的代码。 在HTML中它将是:

<form method="post" action="mailto.rb">

另外,我在ruby文件的第一行添加了ruby可执行文件的路径。

#!~/.rbenv/shims/ruby

我知道使用rails更容易,但我不允许。我必须使用ruby脚本。

PS:我正在使用Middleman,我在localhost上工作。

1 个答案:

答案 0 :(得分:2)

这个想法是你不能用中间人POST请求一个静态文件。如果您middleman build您的应用程序并将所有内容传递给nginx / apache2,则相同。你会得到405 error

例如,要将您的脚本与nginx一起使用,您必须安装并使用spawn-fcgifcgiwrap。从ruby文件中生成一个套接字或一个端口,并将nginx配置为fastcgi_pass到fcgiwrap套接字。

要将其与apache2一起使用,请将您的网站添加到/var/www/html并将其放在vhost中:

AddHandler cgi-script .rb
<Directory /var/www/html>
    Options +ExecCGI
</Directory>

符号链接cgid.confcgid.load到启用mods的文件夹并重启apache2。 检查错误日志以查找其他问题,但它应该可以正常工作。

编辑:在这种情况下,我会选择apache2而不是nginx。作为第三种解决方案,您应该考虑编写一个机架脚本并将其传递给独角兽。