如何在js视图中将javascript变量传递给erb代码?

fes*_*ast 28 javascript ruby-on-rails erb view

我在我的Rails 3项目中有这个Javascript视图:

应用程序/视图/费用/ new_daily.js.erb

var i = parseInt($('#daily').attr('data-num')) + 1;
//$('#daily').append('agrego fila ' + i + ' <br />');

$('#daily').append('<%= escape_javascript(render(partial: 'new_expense', locals: { i: i })) %>');

$('#daily').attr('data-num', i);
Run Code Online (Sandbox Code Playgroud)

我想通过本地人将我的'i'javascript变量传递给ruby部分,我怎么能做到这一点?

Ume*_*sam 22

据我所知,没有办法直接做,原因也很简单,html在服务器端执行,javascript是客户端语言,这意味着它在你的本地浏览器中执行,这就是为什么你甚至尝试要在两者之间传递一个变量,你必须向服务器发出请求,但是这个问题是通过调用一个AJAX请求解决的,这个AJAX请求与向服务器发送新请求的做法相同但是没有刷新或重新加载页面会给用户一种没有请求的错觉.

一个人在这里问一个类似的问题

您可以在MDN上了解有关AJAX的更多信息:

  • 答案为+1,指向w3shcools为-1.每个网络开发者都应该意识到w3schools非常糟糕,看看[w3fools](http://w3fools.com/)找出原因.应该使用Mozilla Developper Center来获取文档. (9认同)
  • Fyi,HTML不是服务器端执行的,ERB是.ERB是用于生成HTML的模板语言.然后将HTML发送到客户端并呈现给客户端. (3认同)

Tha*_* kp 15

是的,你可以使用jquery传递值;

<%=f.text_field :email ,:id=>"email_field" %>

<script type="text/javascript">
   var my_email= "my@email.com"
   $(document).ready(function(){
        $("#email_field").val(my_email);
   });
</script>
Run Code Online (Sandbox Code Playgroud)

  • 问题是如何将值从javascript传递到在Rails不显眼的javascript控制器操作响应(js.erb文件)中呈现的Ruby ERB部分.此答案描述了如何使用javascript设置表单字段的值.所以这不是问题的答案,尽管得票最多. (9认同)