2013-11-03 43 views
6

我正在創建一個使用gem「jquery-rails」的導軌安裝引擎插件。我在.gemspec文件Rails 4可掛載引擎,找不到文件'jquery'

s.add_dependency "jquery-rails", "~> 3.0.1" 

和運行bundle installbundle update添加該代碼。 (順便說一下,這是否增加了必要的?由於導軌可掛載引擎已經添加了「導軌4.0.1」,從一開始就需要「jquery-rails 3.0.4」作爲其依賴項)。

在應用程序/資產/ JavaScript的/ mountable_engine_name/application.js中

//= require jquery 
//= require jquery-ujs 
//= require_tree . 

但是,當我運行測試/虛擬服務器/和訪問它使用的標籤<%= javascript_include_tag "mountable_engine_name/application" %>任何模板,它顯示錯誤「couldn '找文件'jquery'「

我試着創建一個全新的可掛載引擎插件,但它發生相同。

我做錯了什麼?

PS。對不起我的英語不好。

UPDATE
其實這發生在需要jQuery和jQuery的UJS無論是在應用程序/資產/ JavaScript的/和測試/虛擬/應用/資產/ JavaScript的/所有的每一個清單文件。

+0

嘗試給絕對路徑,<%= javascript_include_tag「/ mountable_engine_name/application」%> –

+0

Thx爲答案,但它不起作用。 –

+0

同樣在這裏。運氣好的話? – Marcelo

回答

15

我知道原來的問題在幾個月前被問過,但我碰到同樣 問題,同時通過Rails引擎教程的學習,所以我的情況下,這 幫助別人張貼...

我發現我需要更新四個文件:

1)添加一個依賴您.gemspec文件

#file: <your engine name>.gemspec 

    s.add_dependency "jquery-rails", "~> 3.1.1" 

2)更新引擎的application.js文件:

#file: <your engine name>/app/assets/javascripts/blorgh/application.js 

    ... 
    //= require jquery                               
    //= require jquery_ujs                              
    //= require_tree . 

3)更新父應用程序的application.js文件:

#file: <your engine name>/test/dummy/app/assets/javascripts/application.js 

    ... 
    //= require jquery                               
    //= require jquery_ujs                              
    //= require_tree . 

4)按本SO thread,你需要添加一個需要你engine.rb文件:

#file: lib/<your engine name>/engine.rb 

    module <your engine name> 
     class Engine < ::Rails::Engine 
     require 'jquery-rails' 
     isolate_namespace Blorgh 
     end 
    end 

和平。

+0

那麼bootstrap-generators呢? bootstrap主題也不起作用。 – Donato

+0

沒關係,最好從它的網站安裝bootstrap http://stackoverflow.com/questions/18371318/installing-bootstrap-3-on-rails-app – Donato

+0

這個解決方案也適用於'jquery-datatables-rails' – Donato

2

我已經發現有必要包括在發動機的Gemfile參考:

#Gemfile 
gem "jquery-rails" 

另外,jQuery的UJS的要求用下劃線進行:

//=require jquery_ujs 

祝您好運!

+0

爲我工作。謝謝! – Marcelo

0

添加這兩種運行和開發依賴:

s.add_runtime_dependency "jquery-rails", "~> 3.0.1" 
s.add_development_dependency "jquery-rails", "~> 3.0.1" 

這爲我工作。

+1

和s.add_dependency不一樣嗎? –

5

你應該在你的gem的主文件中需要jquery-rails。

如果你有一個名爲「foo」的寶石這樣做,在它的主文件:

# lib/foo.rb 

require "jquery-rails" 

# ... 
+0

這對我有用,謝謝。 –

0

我有同樣的問題。

使用引擎時,您有兩個application.js文件。應用程序中的一個和引擎中的一個。

它看起來像你試圖將jquery包含在名稱間隔的目錄中,在父應用程序中,這實際上不是引擎。

簡要上下文

發動機可以以不同的方式使用,所以我的做法是在父應用嵌套引擎(我稱之爲apps)像這樣

PARENT_APP_NAME/apps/ENGINE_NAME/app/assets/javascripts/ENGINE_NAME/application.js 

這就是你需要包括

//= require jquery 
相關問題