我正在尝试从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上工作。
答案 0 :(得分:2)
这个想法是你不能用中间人POST请求一个静态文件。如果您middleman build
您的应用程序并将所有内容传递给nginx / apache2,则相同。你会得到405 error
例如,要将您的脚本与nginx一起使用,您必须安装并使用spawn-fcgi
和fcgiwrap
。从ruby文件中生成一个套接字或一个端口,并将nginx配置为fastcgi_pass
到fcgiwrap套接字。
要将其与apache2一起使用,请将您的网站添加到/var/www/html
并将其放在vhost中:
AddHandler cgi-script .rb
<Directory /var/www/html>
Options +ExecCGI
</Directory>
符号链接cgid.conf
和cgid.load
到启用mods的文件夹并重启apache2。
检查错误日志以查找其他问题,但它应该可以正常工作。
编辑:在这种情况下,我会选择apache2而不是nginx。作为第三种解决方案,您应该考虑编写一个机架脚本并将其传递给独角兽。