从HTML表单运行ruby函数

从HTML表单运行ruby函数,html,ruby,Html,Ruby,我已经创建了一个HTML表单,当我点击一个按钮时,我想调用一个ruby函数。HTML表单有一个文本字段和下拉菜单,它们的值应该作为ruby函数的输入参数 ruby函数如下所示: def price(amount, item) # code here end 我试着这样做,但显然是错的: fileHtml.puts " <script> function calculatePrice(){

我已经创建了一个HTML表单,当我点击一个按钮时,我想调用一个ruby函数。HTML表单有一个文本字段和下拉菜单,它们的值应该作为ruby函数的输入参数

ruby函数如下所示:

  def price(amount, item)
    # code here
  end
我试着这样做,但显然是错的:

  fileHtml.puts " <script>
                  function calculatePrice(){
                    document.getElementById('price').value = <% object = MyClass.new %>
                                                                 <%= object.amount(document.getElementById('amount').value, document.form.menu.options[document.form.menu.selectedIndex].value) %>
                                           }

                  </script>"
fileHtml.put”
函数calculatePrice(){
document.getElementById('price')。值=
}
"

如何将文本字段的值传递给ruby函数的“amount”,将下拉菜单的值传递给“item”参数?

ruby是一种服务器端语言。HTML是客户端。在此上下文中,Javascript也是客户端。 不能从客户端代码调用服务器端函数。想想浏览器。它不懂Ruby。所以它不能执行Ruby函数


您必须将您的ruby函数公开为web服务或rpc函数,并通过ajax从客户端调用它。

解决方案太多了,但我建议您研究的是sinatra(),这是一个web微框架

然后您将使用它来:

  • 当webbrowser访问sinatra应用程序(“服务器”)时,向webbrowser提供HTML
  • 点击按钮(表单提交),网络浏览器将与sinatra(“看,Galil在金额字段中输入了5”)应用程序进行对话,该应用程序可以对该数据执行任何操作
祝你好运