0

我正在使用 Sinatra、Ruby、HAML 和 JavaScript

所以我想出了如何在 HAML JavaScript 中调用 ruby​​ 函数

@@layout
%html
    %head
        %title #{@title}
          :javascript
              var retval
              function diff_by_company_id() {
                 retval = "#{ruby_function()}";
              }

但是,我现在需要向 ruby​​ 函数传递一个 javascript 变量,但我不知道该怎么做。这是我尝试过的,显然不起作用。

def test(input)
    return "Output Number: "+input.to_s + "!"
end

@@layout
%html
    %head
        %title #{@title}
          :javascript
              var retval
              function diff_by_company_id() {
                 var input = 1;
                 retval = "#{ruby_function("input")}";
              }

它不是传递输入值 1,而是传递字符串输入。

所以我得到的是:retval = Output Number: input!

我想要的是: retval = Output Number: 1!

任何有关如何正确通过的帮助将不胜感激。

4

1 回答 1

3

Ruby 在服务器端执行,javascript 在客户端执行。现在起作用的原因是 ruby​​ 代码是在页面加载时执行的。

如果不向服务器发出 AJAX 请求,就不可能“将 javascript 变量传递给 ruby​​”。

于 2013-07-18T20:20:37.410 回答