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

标签 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,并且在本地主机上工作。

最佳答案

这个想法是你不能通过中间人 POST 请求静态文件。如果您中间人构建您的应用程序并将所有内容传递给 nginx/apache2,情况也是如此。您将获得 405 error

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

要将其与 apache2 一起使用,请将您的站点添加到 /var/www/html 并将其放入虚拟主机中:

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

符号链接(symbolic link) cgid.confcgid.load 到启用 mods 的文件夹并重新启动 apache2。 检查错误日志是否有其他问题,但它应该可以工作。

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

关于html - 表单操作下载 ruby​​ 脚本而不是运行它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25266603/

相关文章:

javascript - 如何获取用户输入的选定房间并将其乘以两个日期之间的天数差异?

javascript - 如果上一个为空,则清除下一个嵌套选择标签

ruby - 测试厨房中的 ulimit

ruby-on-rails - 从枚举模型中设置 Rails 表单隐藏字段

javascript - 如何在javascript中的setAttribute()方法中将参数添加到函数中

javascript - 如果有一个使用 javascript 或 jquery 的长菜单,如何自动将滚动条添加到侧边栏菜单

html - CSS 元素过渡/动画 : Opacity Issue

accessibility - 我应该如何设置 HTML "select"和 "option"标签的样式

ruby - 使用 ARGF 处理管道的两种方式之间的区别?

ruby - 检查字符串是否等于有效月份 ruby​​?