javascript 如何在rails视图中定义gon变量(slim文件)?

qxgroojn  于 2023-05-12  发布在  Java
关注(0)|答案(2)|浏览(109)

在我的项目中,我有许多视图需要将ruby/rails数组传递给javascript/jquery代码。我使用gon gem,当我在控制器代码中定义gon变量时,它工作得很好,但是我如何在视图代码(slim文件)中分配变量呢?
例如,如果我们在控制器中有以下代码:

gon.test_var = "hello there"

然后尝试在我的jquery/javascript代码中提醒它,如下所示:

$(document).ready(function() {
  alert(gon.test_var);
});

它工作正常。
如何通过在视图文件中定义变量来实现相同的功能(我应该能够在slim文件中定义gon.test_var)?
编辑:请注意,我们分配给变量的值是Ruby变量,而不是静态字符串或数字。

xqnpmsa8

xqnpmsa81#

设置:

- name = 'smth'
= current_gon.gon["name"] = name

获取:
= current_gon.gon["name"]

uyto3xhc

uyto3xhc2#

官方的方法是使用Gon的全局设置:

- Gon.global.push test_var: your_value

并使用全局数据:

gon.global.test_var

另一种方式是将gon作为示例变量传递。所以在你的控制器里你分配

@gon = gon

那么在你看来,你可以用

- @gon.push test_var: your_value
- @gon.test_var2 = your_value # old syntax

相关问题