我在 ruby 中有一些值(变量和对象/散列),我想将它们传递给渲染页面上的 javascript。目前我使用这些方法来简单地编写在客户端声明变量的javascript。
def declare_as_js_vars vars
string = ""
vars.each do |name, value|
string += self.declare_as_js_var(name, value)
end
string
end
def declare_as_js_var name, value
name.to_s + "='" + value.to_s + "';"
end
这里的问题是我无法声明对象,必须单独声明变量。我想知道 rails 中是否有某种方法可以轻松地做到这一点,因为事实证明这是一个很好的 hack。
我应该如何将变量和对象传递给 javascript?请提供一些语法示例
最佳答案
有点晚了,但也许对其他人有帮助。有一个很好的 gem 叫做 gon这对于将变量从 rails 传递到 javascript 非常有用。您也可以发送整个对象。
在 Controller 中你可以有这样的东西
@your_int = 123
@your_array = [1,2]
@your_hash = {'a' => 1, 'b' => 2}
gon.your_int = @your_int
gon.your_other_int = 345 + gon.your_int
gon.your_array = @your_array
gon.your_array << gon.your_int
gon.your_hash = @your_hash
gon.your_object = Table.find(params[:id])
然后在 javascript 中它将像这样可用
alert(gon.your_int)
alert(gon.your_other_int)
alert(gon.your_array)
alert(gon.your_hash)
alert(gon.your_object.name)
还有一个railscast关于它。
关于javascript - 将多个 rails 变量传递给 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8263951/