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文件,也不会为搜索功能生成正确的 url


  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包需要怎么写?


德玛西亚99
浏览 91回答 1
1回答

蛊毒传说

Javascript 包不会为每个请求/访问者呈现 - 重点是每次部署时都会打包一次,并且对于所有包都是相同的(除非您有多个包、动态模块加载和其他高级技术,但代码仍然没有更改)根据要求)。事实上,资产管道的旧方法在这方面非常相似。不要尝试在包内使用 ruby,而是想办法将参数传递给 js 代码。例如,您可以通过添加一些 html 标签并从 javascript 查询它来传递它: 在视图中:<meta&nbsp;name="nation_id"&nbsp;content="<%=&nbsp;params[:nation_id]&nbsp;%>"&nbsp;/>在js中:nation_id&nbsp;=&nbsp;document.querySelector('meta[name="nation_id"]').content; return&nbsp;`/search.json?nation_id=${nation_id}&q=${phrase}`;附言。你也可能需要逃避你phrase的encodeURIComponent
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript