将javascript变量传递给erb标记

时间:2014-04-08 22:55:38

标签: javascript jquery ruby ajax erb

我一直在研究如何在erb< %%>中使用javascript变量标签。这必须通过AJAX完成(参见How to pass a javascript variable into a erb code in a js view?)。我是JS的新手,特别是AJAX的新手,并且在实际中找到一个这样的例子会很棒。

考虑以下简单场景,其中需要从JS传递到ERB的所有内容都是简单的文本:

HTML:     <input id="example-input" type="text">

$(function() {
  $('input#example-input').keyup(function(e) {
    if(e.keyCode == 13){
      var input = $('input#example-input').val();
      <% puts input.upcase %>
    }
  }
});

请注意,输入不会在erb标记中定义,因此会引发错误。

1 个答案:

答案 0 :(得分:0)

我相信您假设行<% puts input.upcase %>将在您的javascript行var input = $('input#example-input').val();之后执行ruby代码。如果这是你在想的,这是不正确的。在您给出的示例中:

  • 页面加载时会执行<% puts input.upcase %>
  • {li} input <% puts input.upcase %>中的 ruby​​ 变量 {li> input var input = $('input#example-input').val();中的 javascript 变量

如果您在服务器方面设置了变量,则可以在javascript中说出类似的内容:

var my_js_var = '<%= a_str_in_ruby %>';

并且可以在javascript端初始化变量。

但是,由于您要从客户端(也称为javascript)向服务器端请求数据(由rails控制器处理),您应该做的是提交ajax请求。有一个section in the rails documentation包含示例,还有一个好railscasts episode(如果您是付费会员)。