gpt4 book ai didi

javascript - 将 Rails 变量传递给 JavaScript

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

我想将变量从 Rails Controller 传递到 JavaScript 文件。我找到了一些解决方案,现在我有:

# controller 
def index
@coords = Map.all
end


#view
<%= content_tag 'div', id: 'coords', data: {coords: @coords } do %>
<% end %>

#javascript
alert($('#coords').data(coords));

编辑:

$('#coords').data(coords) 返回一个对象 Object

如何在 javascript 中访问 coords 的特定属性,例如 coord.lat 等?另外,@coords 会自动转换为 JSON 吗?

注意:我无法使用 gon gem。我认为 rails 4.2 不支持它。所以我需要一个没有 gem 的解决方案。

最佳答案

这里是我如何将 gem gon 与 rails-4.2.0 一起使用。真的没什么特别的:

# Gemfile.lock where rails binded to version 4.2.0
gon (5.2.3)
actionpack (>= 2.3.0)
json
multi_json
request_store (>= 1.0.5)
....
PATH
remote: engines/mobile_api
specs:
mobile_api (0.1)
itunes-receipt
rails (~> 4.2.0)

# Gemfile
source 'http://rubygems.org'

gem 'rails', '4.2.0'
gem 'gon'

# layout main.html.slim
doctype html
html
head
meta charset="utf-8"
= include_gon

# main_controller.rb (In the controller)
class MainController < ApplicationBaseController
before_action :start_marketing_split_test
layout 'main'

# ... actions here

def start_marketing_split_test
split_test_name = 'ab_test_1'
alternatives_loader =
Marketing::AB::AlternativesLoader.new(split_test_name)

alternative = ab_test(split_test_name,
alternatives_loader.alternatives)

gon.push({"#{split_test_name}" => JSON.parse(alternative)})
end

============================

但是如果您需要不使用 gon 的解决方案,您可以直接在后端模板中传递变量:

例如:

# layouts/application.html.slim

doctype html
html
head
meta charset="utf-8"
title
body
javascript:
window.app_options = {
'flash_alert': "#{raw(flash[:alert])}",
'flash_warning': "#{raw(flash[:warning])}",
'flash_notice': "#{raw(flash[:notice])}",
'current_user_id': "#{current_user.try(:id)}",
'current_user_phone': "#{current_user.try(:phone)}"
};

关于javascript - 将 Rails 变量传递给 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30817533/

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