Rails 6包中参数的javascript语法

杰罗姆

动作:一种JavaScript动作,它试图基于两个参数(用户输入的一个参数和一个发出页面的参数)来检索数据。

而在过去,类似以下内容将起作用:

<%= javascript_tag do %> chart.data = data_<%=j params[:nation_id] %>; <% end %>

现在,JavaScript被“打包”了,像<%=j params[:nation_id] %>这样的语法编译不起作用并返回:

/search.json?nation_id=%22%3C%=j%20params[:nation_id]%20%%3E%22&q=mi 

packs/muni.js如下修改文件,也不会为搜索功能生成正确的网址

  var options = {
    url: function(phrase) {
      return '/search.json?nation_id="#{params[:nation_id]}"&q=' + phrase;
    },
    getValue: "name",
  };

返回

/search.json?nation_id=%22

该页面设置为 /new?top%5Bnation_id%5D=1&commit=Set

javascript包需要如何编写?

Vasfed

不会为每个请求/访问者呈现Javascript包-整个问题是,它在每次部署中打包一次,并且对于所有应用程序都是相同的(除了当您有多个包,动态模块加载和其他高级技术时,但代码未更改)每个请求)。实际上,使用资产管道的较旧方法在这方面非常相似。

不要尝试在包内使用ruby,而是想办法将参数传递给js代码。

例如,您可以通过添加一些html标记并通过javascript查询来传递它:在视图中:

<meta name="nation_id" content="<%= params[:nation_id] %>" />

在js中:

nation_id = document.querySelector('meta[name="nation_id"]').content;
return `/search.json?nation_id=${nation_id}&q=${phrase}`;

PS。你也可能需要逃避你phraseencodeURIComponent

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章