【问题标题】:Javascript in HAML in JavascriptJavascript 中的 HAML 中的 Javascript
【发布时间】:2016-11-24 15:15:22
【问题描述】:

我有一个以前可能被问过的问题,但我找不到合适的描述。我希望有人可以帮助我。

在我设置var price 的行下面的代码中,我想添加javascript 变量accu_id 以通过rails 在我的数据库中查找记录。如何在 javascript 的嵌入式导轨中执行此操作?

 :javascript
    $('#accu').change(function() {
      var accu_id = $("#accu")[0].selectedOptions[0].value
      var price = "#{currency(Product.find_by(id: accu_id).price2)}"
      $('#price_accu').append(price)
    });

或者有更简单的方法吗?

【问题讨论】:

  • 为什么要把纯 JS 和 jQuery 混为一谈?
  • 最好的方法是使用 AJAX 并在控制器内部进行查询。在这种情况下,您不能在嵌入式 ruby​​ 中添加 JS 变量。我想这可能是如何实现这一目标的一个很好的指导:stackoverflow.com/a/15422887/615410

标签: javascript ruby-on-rails ruby-on-rails-4 haml


【解决方案1】:

你有两个选择。

  1. 您可以使用 AJAX 请求从数据库中获取数据
  2. 您可以使用如下映射概念

    var data = @processed_data // json 数据,包含处理后的 json 格式数据。
    var accu_id = $("#accu")[0].selectedOptions[0].value
    var price = data.accu_id;

这里的@processed_data 包含如下数据

@processed_data = currency_calculation

def currency_calculation
   Product.all.map { |product| [product.id, currency(product.price2) ] }.as_json 
end

例子

假设 products 表有两个条目,那么@processed_data 包含如下值

{ "1" => "20.00", "2" => "25.50" }

以上数据直接赋值给js变量data,像data.key一样访问

第一个选项是最好的选择,第二个是可能的。

注意:不能在ruby中使用js变量。

【讨论】:

    猜你喜欢
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多