rails 6包上下文中参数的javascript语法

rails 6包上下文中参数的javascript语法,javascript,ruby-on-rails,ruby-on-rails-6,webpacker,Javascript,Ruby On Rails,Ruby On Rails 6,Webpacker,操作:一个javascript操作,试图基于两个参数检索数据,一个是用户输入参数,一个是发布页面参数 然而,在过去,类似于以下的方法是可行的: <%= javascript_tag do %> chart.data = data_<%=j params[:nation_id] %>; <% end %> 如下修改packs/muni.js文件也不会为搜索功能生成正确的url var options = { url: function(phrase

操作:一个javascript操作,试图基于两个参数检索数据,一个是用户输入参数,一个是发布页面参数

然而,在过去,类似于以下的方法是可行的:

<%= javascript_tag do %> chart.data = data_<%=j params[:nation_id] %>; <% end %>
如下修改
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?顶部%5国家id%5D=1&commit=set


javascript包需要如何编写?

javascript包不会针对每个请求/访问者呈现-关键是它在每次部署时打包一次,并且对所有人都是一样的(除非您有多个包、动态模块加载和其他高级技术,但仍然不会针对每个请求更改代码)。事实上,使用资产管道的旧方法在这方面非常相似

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

例如,您可以通过添加一些html标记和从javascript查询来传递它: 鉴于:


另外,您可能需要使用
encodeURIComponent

短语进行转义。从安全角度来看,此解决方案很有趣:它不会在HTML代码中显示太多内容。javascript仍然存在,但是在一个无休止的滚动文件中;挖洞的费用增加了。如果一个人决定不破坏meta标记的布局,并且认为javascript在html代码中非常明显,那么
标记就可以了。
/search.json?nation_id=%22
<meta name="nation_id" content="<%= params[:nation_id] %>" />