![](/img/trans.png)
[英]How to add a controller-specific javascript from vendor/assets/javascripts using javascript_include_tag?
[英]Rails 4 / Sprockets: controller-specific JavaScripts are available everywhere?
我正在运行Rails 4.2.4,并在创建控制器auth
时自动创建app/assets/javascripts/auth.js
它告诉我:
//在此处放置与匹配控制器相关的所有行为和挂钩。 //所有这些逻辑将自动在application.js中可用。
很好,但是由于application.js
清单包含//require_tree .
,我添加到app/assets/javascripts
文件夹中的任何文件将对任何控制器可用。
我的印象是,这些文件是特定于一个控制器的,不会在其他地方显示,而是在AuthController
页面上AuthController
。
我是否在这里遗漏了一些东西,或者是设计使然,仅仅是为了组织工作流程而已,仅此而已?
正确地说,对于您所描述的情况,您放置在app/assets/javascripts/auth.js
所有javascript都可用于使用application.js
清单的任何视图,而不仅仅是AuthController
呈现的AuthController
。
这是设计使然,可能会引起误解。 如何在Rails框架内组织javascript是一个经常被争论且没有一致约定的热点话题。
将javascript拆分为与其余应用程序代码匹配的文件/目录结构的想法只是一种方便的措施,可以帮助您知道在哪里寻找或放置javascript的地方。 在Rails 4之前,视图帮助器模块处于类似状态-它们的文件名与相应的视图和控制器匹配,但是方法本身在整个应用程序中都可用(默认情况下)。
就是说,仅仅因为Rails不会对javascript范围施加限制,并不意味着您不应该遵循约定并手动执行约定。 将您的应用程序清单分解为多个控制器清单或在布局中放入erb逻辑可以帮助实现此目的。
就像我说的那样,这是一个热门话题,因此,如果您对如何在Rails中组织javascript进行一点点谷歌搜索,就会发现大量带有明确建议的博客。 这是一个不错的例子:
http://brandonhilkert.com/blog/organizing-javascript-in-rails-application-with-turbolinks/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.