导轨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); 

什么错?

+0

你能分享orders_now.js吗? –

+0

你的控制器的名称是什么?它是'OrdersNowController'吗? – MurifoX

+0

是的,'OrdersNowController' –

我发现它在我将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。

希望这会有所帮助。