在javascript HAML中将javascript变量传递给ruby函数调用

时间:2013-07-18 20:17:52

标签: javascript ruby sinatra haml

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

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

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

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

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")}";
              }

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

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

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

任何有关如何正确传递此信息的帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

Ruby在服务器端执行,javascript在客户端执行。现在这样做的原因是在加载页面时执行ruby代码。

如果不向服务器发出AJAX请求,则无法“将javascript变量传递给ruby”。