gpt4 book ai didi

javascript - 如何将 ruby​​(rails) 变量传递给 Javascript?

转载 作者:行者123 更新时间:2023-11-30 11:40:07 25 4
gpt4 key购买 nike

这是 Rails 中的应用程序。

这是我在“路线”中的内容:

 resources :destinations

这是我在“destinations_controller”中的内容:

def show
@destination = Destination.find(params[:id])
end

这是我在“views/destinations/show.html.erb”中的内容:

<h2><%= @destination.latitude %></h2>

<script>

var dest_lat = <%= @destination.latitude %>

</script>

这是我在“application.js”中的内容:

var dest_location = {dest_lat};

这是我第三次构建此应用程序。最初,我没有收到任何错误,并且所有编码工作正常……几个小时。然后,在我不做任何更改的情况下,@destination.latitude 中的值仍然出现在 h2 标记中,但我开始收到错误:

Uncaught ReferenceError: dest_lat is not defined

带有显示其在“application.js”中的使用的链接,并且该应用停止工作。

为什么?

感谢任何帮助。

最佳答案

这不是打印对 Javascript 有用的东西:

<script>
var dest_lat = <%= @destination.latitude %>
</script>

尝试将其更改为:

<script>
var dest_lat = '<%= @destination.latitude %>';
</script>

在这里您可以看到引号有所不同。

var dest_lat = some_value;

var dest_lat = 'some_value';
console.log(dest_lat);

更新:为了让您的数据在您的 application.js 中可用,您可以将它们存储在一个不可见的 div 中,带有 content_tag,它将包含您的 @destination.latitude 和您需要的任何其他内容工作

# your_view.html.erb
<%= content_tag :div, class: 'destination_latitude', data: {destination_latitude: @destination.latitude} do %>
<% end %>

然后您可以将它们作为 Javascript 对象访问:

document.addEventListener('DOMContentLoaded', function(e) {
console.log($('.destination_latitude').data('destination-latitude'));
});

关于javascript - 如何将 ruby​​(rails) 变量传递给 Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43043804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com