【问题标题】:Add Ruby code into JavaScript code将 Ruby 代码添加到 JavaScript 代码中
【发布时间】:2017-08-21 22:02:50
【问题描述】:

我正在使用 Ruby on Rails、JavaScript 和 Simple Form,我在将 Ruby 代码添加到 JavaScript 中的函数时遇到了问题。

我的源代码是:

$('#add_taxo').on('click',function() {
    document.getElementById('okok').innerHTML += '<li class="list-group-item"> <%= taxonomies_select_tag( 'statistic[taxonomy]', Folders::Taxonomy, Folders::Taxonomy::TAXONOMY_KEY, level: 3, path: 'folders/taxonomies', include_blank: true, class: 'required form-control test_taxo')%> </li>';
    alert("lklk"); 
});

此代码不起作用。

【问题讨论】:

    标签: javascript ruby-on-rails simple-form slim-lang


    【解决方案1】:

    您只能通过 ajax 的 view/*.js/coffee.erb 文件使用 ruby​​ 代码。您不能在普通的 js/coffeescript 文件中使用 ruby​​。如果你需要将数据从控制器传递到js端,那么通过数据属性在你的视图中通过隐藏字段标签传递。

    【讨论】:

    【解决方案2】:

    尝试在 ruby​​ 代码中转义 javascript,如下所示:

    document.getElementById('okok').innerHTML += '<li class="list-group-item"> <%= j(taxonomies_select_tag( 'statistic[taxonomy]', Folders::Taxonomy, Folders::Taxonomy::TAXONOMY_KEY, level: 3, path: 'folders/taxonomies', include_blank: true, class: 'required form-control test_taxo'))%> </li>';
    

    您可以使用escape_javascript(...)j(...)(如示例中所示)。

    【讨论】:

    • @youssefhassoun 您是否在服务器日志或浏览器控制台上收到任何错误?
    【解决方案3】:

    确保扩展名是.js.erb 并且它是views 文件夹的一部分。

    如果你想通过纯 js 来实现,那么通过html 传递这些变量,例如:隐藏字段、html 标签属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      相关资源
      最近更新 更多