gpt4 book ai didi

javascript - 在 Rails 应用程序中访问 Javascript 变量

转载 作者:行者123 更新时间:2023-12-03 07:53:13 25 4
gpt4 key购买 nike

我被困在一项任务上,不知道如何继续前进。任何意见将不胜感激! (我对 Javascript 和 jQuery 很陌生)。

我正在实现在创建或编辑建筑物期间在谷歌地图上标记建筑物的功能(两者的形式相同)。

所以我的 .html.haml 文档中的表单有 2 个字段用于选择国家和城市。只要未选择国家/地区,城市字段就会被禁用。这两个字段都保存国家和城市的 ID(不是名称!)。

= select_tag 'building[country_id]', options_for_select(Country.all.map{|c| [c.name, c.id]), onchange: "getLocationObjects ($(this).val(), '#{cities_path}')"

- if building.country
= select_tag 'building[city_id]', options_for_select(building.get_countries.cities.map{|c| [c.name, c.id]}, building.get_city.id), include_blank: "Choose city"
- else
= select_tag 'building[city_id]', options_for_select([["Choose country", '']]), disabled: true

但是为了在谷歌地图上标记建筑物,我需要一个城市名称,而不是ID(不要说“然后将其保存在选择标签而不是ID中”,我需要在应用程序的其他部分中使用ID)。

所以我使用 jQuery 来保存城市名称:

:javascript
$(document).ready( function () {
$('#building_city_id').change(function() {
var option = $(this).find('option:selected').text();
return option;
});
});

这就是第一个问题发生的地方:当我编辑已指定国家/地区的建筑物时,jQuery 函数可以很好地保存城市名称。但如果我从列表中选择另一个国家/地区,它就不再起作用了。

第二个问题:Google map 的所有代码都位于 .js 文件中。那么如何在这里调用在 .html.haml 文件中创建的 Javascript 变量呢?

最佳答案

您需要记住这里的架构:Rails/Ruby 在服务器上生成一些文本文件,这些文件被发送到浏览器(客户端)。然后浏览器可以评估它们,渲染 html 并执行 javascript。

您可以在 Rails 中动态编写 javascript,但它不会在那里执行,因此您无法访问变量。

同样,浏览器中的 javascript 运行时环境对您的 Rails 应用程序一无所知。它可以与 Rails 进行的唯一通信是通过向服务器发送请求。

因此,如果您希望 JavaScript 在“有国家/地区”选项和“无国家/地区”选项之间进行选择,则可以选择以下任一选项

a) 所有选项集都需要显示在页面上(但最初是隐藏的,除了国家/地区选择之外),并且 JavaScript 在适用时显示/隐藏它们

b) 当选择第一组选项时,JavaScript 会对 Rails 进行 ajax 调用,以创建第二个下拉列表,具体取决于选择的国家/地区。

关于javascript - 在 Rails 应用程序中访问 Javascript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34923775/

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