2017-01-30 108 views
0

有關同一問題(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' –

回答

0

我發現它在我將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函數將始終在每個頁面請求的瀏覽器中加載。現在對我來說沒問題。

0

你周圍的兔子洞後,運行「因爲我有」

對這一問題的最輕的方法是加載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。

希望這會有所幫助。