如何将变量从控制器传递到javascript后,变量被计算完成

How to pass variable from controller to javascript after the variable is done being computed?

本文关键字:变量 计算 javascript 控制器      更新时间:2023-09-26

我有一个链接到一个方法的按钮,我们称它为"method",在UserController中,它看起来像这样:

def method
  ***do stuff***
  @my_variable = value dependent on the do stuff part
end

是否有任何方法访问变量在我的javascript当它被计算完成(基本上,当它被定义)?

在你的动词文件

<%= javascript_tag do %>
  window.MyVariable = '<%= @my_variable %>';
<% end %>

railscasthttp://railscasts.com/episodes/324-passing-data-to-javascript?view=asciicast

如果你不想使用window。解决方案,这里有一个不同的想法可以尝试。

这就是我在show.html.erb中所做的,在使用google map API的js函数中传递一个反向地理编码地址来映射点。

<!-- Must be set to pass instance vars to javascript -->
<%= javascript_tag "var js_marker_lat = #{@location.latitude.to_json};" %>
<%= javascript_tag "var js_marker_lng = #{@location.longitude.to_json};" %>

在javascript函数中,您像往常一样使用变量。

var latlng = new google.maps.LatLng(js_marker_lat, js_marker_lng);

在控制器中,javascript_tag helper不可用,因此您可能仅限于使用html。Erb文件用于js vars之类的东西。请告诉我进展如何。