【问题标题】:Pass ruby variables to js code将 ruby​​ 变量传递给 js 代码
【发布时间】:2011-05-13 09:22:57
【问题描述】:

我很好奇将我的 rails 变量传递给 javascript 代码的最佳方式是什么。例如,我的控制器中有这一行:

@address = get_user_address
@farms = Farm.all

现在我需要用它来初始化我的谷歌地图,现在我使用普通的 javascript 并且我更确定这是一个丑陋的解决方案。我认为我有类似的东西

%script
  distance = []
  - @farms.each do |f|
    distance.push(['#{f.latitude}' + ',' + '#{f.longitude}' + ',' + '#{f.name}', #{f.distance_from(@address)}])
  distance.sort(sortMultiDimensional)
  user_coords = #{Geocoder.coordinates(@address)}

和谷歌地图初始化下。如何避免这种丑陋的 ruby​​-in-javascript 代码?谢谢!

【问题讨论】:

    标签: javascript ruby-on-rails google-maps


    【解决方案1】:

    将变量放入渲染页面的 HTML 中,然后在执行时使用 javascript 从 DOM 中读取它们。这允许您将 JS 编写在单独的文件中,而不会用随机脚本变量使文件混乱。

    一定要清理用户提供的变量。

    【讨论】:

      【解决方案2】:
      %script
        distance = #{@farms.collect{|f| [f.latitude, f.longitude, f.name] }.inspect}
        distance.sort(sortMultiDimensional)
        user_coords = #{Geocoder.coordinates(@address)}
      

      【讨论】:

      • 虽然已经发布了我认为@wewals 将它们写入页面然后在 js 中读取它们的方法更干净。
      • 这和我现在的差不多。我的观点被 ruby​​-in-js 代码污染了。
      猜你喜欢
      • 1970-01-01
      • 2018-01-09
      • 2018-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多