我正在创建一个使用gem“jquery-rails”的rails mountable引擎插件 . 我在.gemspec文件中添加了此代码
s.add_dependency "jquery-rails", "~> 3.0.1"
并运行 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 .
但是,当我在test / dummy /上运行服务器并访问使用标签 <%= javascript_include_tag "mountable_engine_name/application" %>
的任何模板时,它显示错误 "couldn't find file 'jquery'" .
我尝试创建一个全新的可安装引擎插件,但它发生的情况相同 .
我做错什么了吗?
PS . 对不起我的英语不好 .
UPDATE
实际上它发生在app / assets / javascript /和test / dummy / app / assets / javascript /中需要jquery和jquery-ujs的所有清单文件中 .
6 回答
我知道原来的问题是在几个月前被问到的,但我在使用Rails引擎教程时遇到了同样的问题,所以我发帖以防万一这有助于其他人......
我发现我需要更新四个文件:
1.)为.gemspec文件添加依赖项
2.)更新您的引擎application.js文件:
3.)更新您的父app app.js文件:
4.)根据SO thread,您需要在engine.rb文件中添加一个require:
和平 .
您应该在gem的主文件中需要jquery-rails .
如果你有一个名为“foo”的宝石,请在它的主文件中这样做:
我发现有必要在引擎的Gemfile中包含一个引用:
另外,jquery ujs的要求是用下划线完成的:
祝你好运!
添加运行时和开发依赖项:
这对我有用 .
我有同样的问题 .
使用引擎时,您有两个
application.js
文件 . 应用程序中的一个和引擎中的一个 .看起来你试图将jquery包含在父应用程序中的名称间隔目录中,这实际上并不是引擎 .
Brief Context
引擎可以以不同的方式使用,所以我的方法是在父应用程序(我称之为
apps
)中嵌套引擎,就像这样这是你需要包含的地方
这是一个问题,每个新手从Rails Engine面孔开始 . 我知道它的问题可以追溯到今天的4年,它的答案已经标明正确了 . 在为我的引擎应用程序编写TestCases时,我在Rails 5中遇到了同样的问题,我注意到我必须将
require jquery
添加到我的所有引擎的application.js
文件中,这违反了rails DRY范例 .我觉得明显的答案有点违反了Rails DRY(不要重复自己)的范例 .
在基于Rails引擎的解决方案中,
application.js
存在于:域名资产目录;
所有引擎资产目录(即在任何情况下,您在该引擎中都有多个应用程序)
所有引擎测试虚拟目录(即在任何情况下,您在该引擎中都有多个应用程序)
Solution :
注意:
csv_importer
是我的引擎中的应用程序名称 ...在我自己的情况下,我在engine.rb中添加了一个简单的初始化程序,并且在那里也需要
'jquery-rails'
. 这使我能够从域/父应用程序运行其他任务,例如将引擎应用程序本身作为gem捆绑到父应用程序中 . 要求jquery-rails
也使'jquery-rails'在我的特定引擎应用程序中全局可用 . 例如所以我有:这就是我在rails mountable引擎插件中解决问题所做的工作 . 我希望这有助于新手在2018年5月到来 .
谢谢