javascript - 将多个 rails 变量传递给 javascript

标签 javascript ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 rjs

我在 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/

相关文章:

ruby-on-rails - 如何在 Rails 3 中实现批量插入

javascript - Knockout 将可观察数组与另一个 ViewModel 关联起来

javascript - react-create-app - 获取有关浏览器列表错误的错误

ruby-on-rails - 你如何在 Rails 中做相对时间?

ruby-on-rails - 大型测试套件中的 Rspec/FactoryGirl 唯一性验证

ruby-on-rails-3 - 从 Gem 添加到 Rails autoload_paths

javascript - 将单选按钮值传递给 sql 查询

javascript - Node.js 中是否需要清除 Buffer?如果是,如何?如果否,这里的问题是什么?

ruby-on-rails - 修补 ActiveStorage::Attachment 的猴子丢失了

ruby - 站点棱镜, capybara : Selector with variable