我一直在研究如何在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标记中定义,因此会引发错误。
答案 0 :(得分:0)
我相信您假设行<% puts input.upcase %>
将在您的javascript行var input = $('input#example-input').val();
之后执行ruby代码。如果这是你在想的,这是不正确的。在您给出的示例中:
<% puts input.upcase %>
。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(如果您是付费会员)。