javascript rails 6 包上下文中参数的语法
javascript syntax for parameters in the context of rails 6 packs
操作:javascript 操作尝试根据两个参数检索数据,一个是用户输入参数,另一个是发布页面参数。
而在过去,类似以下的方法会起作用:
<%= javascript_tag do %> chart.data = data_<%=j params[:nation_id] %>; <% end %>
现在 javascript 为 'packed',像 <%=j params[:nation_id] %>
这样的语法编译不起作用,returns :
/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包需要怎么写?
Javascript 包不会为每个 request/visitor 呈现 - 重点是它每次部署打包一次并且对所有包都是相同的(除非你有多个包,动态模块加载和其他高级技术,但仍然不会根据请求更改代码)。事实上,在这方面,使用资产管道的旧方法非常相似。
不要尝试在包内使用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。你也可能需要用 encodeURIComponent
来逃避你的 phrase
操作:javascript 操作尝试根据两个参数检索数据,一个是用户输入参数,另一个是发布页面参数。
而在过去,类似以下的方法会起作用:
<%= javascript_tag do %> chart.data = data_<%=j params[:nation_id] %>; <% end %>
现在 javascript 为 'packed',像 <%=j params[:nation_id] %>
这样的语法编译不起作用,returns :
/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包需要怎么写?
Javascript 包不会为每个 request/visitor 呈现 - 重点是它每次部署打包一次并且对所有包都是相同的(除非你有多个包,动态模块加载和其他高级技术,但仍然不会根据请求更改代码)。事实上,在这方面,使用资产管道的旧方法非常相似。
不要尝试在包内使用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。你也可能需要用 encodeURIComponent
phrase