操作:一种 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=Setjavascript包需要怎么写?
1 回答
蛊毒传说
TA贡献1895条经验 获得超3个赞
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}`;
附言。你也可能需要逃避你phrase
的encodeURIComponent
添加回答
举报
0/150
提交
取消