Rails 4可安装引擎,找不到文件'jquery'

Sar*_* S. 8 ruby jquery ruby-on-rails rails-engines ruby-on-rails-4

我正在创建一个使用gem"jquery-rails"的rails mountable引擎插件.我在.gemspec文件中添加了此代码

s.add_dependency "jquery-rails", "~> 3.0.1"
Run Code Online (Sandbox Code Playgroud)

并运行bundle install,bundle update.(BTW是否需要添加?因为rails mountable引擎已经添加了"rails 4.0.1",这反过来又要求"jquery-rails 3.0.4"作为它的依赖从一开始?).

在app/assets/javascript/mountable_engine_name/application.js中

//= require jquery
//= require jquery-ujs
//= require_tree .
Run Code Online (Sandbox Code Playgroud)

但是当我在test/dummy /上运行服务器并访问任何使用该标签的模板时,<%= javascript_include_tag "mountable_engine_name/application" %>它显示错误"找不到文件'jquery'".

我尝试创建一个全新的可安装引擎插件,但它发生的情况相同.

我做错什么了吗?

PS.对不起我的英语不好.

更新
实际上它发生在app/assets/javascript /和test/dummy/app/assets/javascript /中需要jquery和jquery-ujs的所有清单文件中.

jgp*_*tko 17

我知道原来的问题是在几个月前被问到的,但我在使用Rails引擎教程时遇到了同样的问题,所以我发帖以防万一这有助于其他人......

我发现我需要更新四个文件:

1.)为.gemspec文件添加依赖项

    #file: <your engine name>.gemspec

    s.add_dependency "jquery-rails", "~> 3.1.1"
Run Code Online (Sandbox Code Playgroud)

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

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

    ...
    //= require jquery                                                                                                                         
    //= require jquery_ujs                                                                                                                     
    //= require_tree .
Run Code Online (Sandbox Code Playgroud)

3.)更新您的父app app.js文件:

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

    ...
    //= require jquery                                                                                                                         
    //= require jquery_ujs                                                                                                                     
    //= require_tree .
Run Code Online (Sandbox Code Playgroud)

4.)根据此SO线程,您需要向engine.rb文件添加一个require:

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

    module <your engine name>
      class Engine < ::Rails::Engine
        require 'jquery-rails'
        isolate_namespace Blorgh
      end
    end
Run Code Online (Sandbox Code Playgroud)

和平.


edz*_*zik 5

您应该在gem的主文件中需要jquery-rails.

如果你有一个名为"foo"的宝石,请在它的主文件中这样做:

# lib/foo.rb

require "jquery-rails"

# ...
Run Code Online (Sandbox Code Playgroud)