导轨5:加载每个控制器
有关同一问题(Loading Javascript per controller in rails)导轨5:加载每个控制器
我要加载的JavaScript文件时该控制器和它的视图之一被处理分离的Javascript。
所以我有一些JavaScript代码工作得很好,但我想将这个代码外包给控制器orders_now。所以,我将此代码粘贴到这个文件应用程序/资产/ Java脚本/ orders_now.js:
function request_loading_stations()
{
$.ajax({
method: "post",
url: "/orders_now/search_for_loading_stations",
data: { order_now_post: { loading_station_text_field: $('#loading_station_text_field').val() } }
})
};
我确实也配置进入/初始化/ assets.rb:
Rails.application.config.assets.precompile += %w(orders_now.js)
在相应的视图中,我做了以下条目来加载orders_now.js文件。
<%= javascript_include_tag params[:controller] %>
然后,我还重新启动了Rails Web服务器。
当我重新加载浏览器页面,JavaScript文件似乎是未加载。
在浏览器开发者工具,我可以看到的JavaScript文件包括:
<script src="/assets/orders_now.self-877aef30ae1b040ab8a3aba4e3e309a11d7f2612f44dde450b5c157aa5f95c05.js?body=1"></script>
但是,当我要检查这个文件的内容我只看到:
(function() {
}).call(this);
什么错?
我发现它在我将orders_now.js
重命名为任何其他名称(例如, orders_now_irgendwas.js
。
也是条目Rails.application.config.assets.precompile += %w(orders_now.js)
是没有必要的。
和<%= javascript_include_tag params[:controller] %>
也是没有必要的。
重命名orders_now.js
后,javascript函数将始终在每个页面请求的浏览器中加载。现在对我来说没问题。
你周围的兔子洞后,运行“因为我有”
对这一问题的最轻的方法是加载JS是通过您的布局 见(文件=>轨=>布局) 一般这些控制什么被加载并且可以按动作,方法微调,,控制器
IE:layout false {controller}
class YOURController < ApplicationController
layout "mySpecialOrdersLayoutThatIncludesTheJSRequired", only: [:orders_now]
或者在每控制器orders_now
动作(方法)方法:
respond_to do |format|
format.html {render 'mySpecialOrdersLayoutThatIncludesTheJSRequired'}
end
当前的布局复制到mySpecialOrdersLayoutThatIncludesTheJSRequired.html.erb
,包括在此文件中的必要JS。
希望这会有所帮助。
你能分享orders_now.js吗? –
你的控制器的名称是什么?它是'OrdersNowController'吗? – MurifoX
是的,'OrdersNowController' –