ruby-on-rails - Rails 3.1 引擎的 Assets

标签 ruby-on-rails ruby ruby-on-rails-3.1 asset-pipeline

应该如何在 Rails 3.1 的引擎中提供 Assets ?它们应该位于何处,它们可以自动包含在内吗?

( originally asked by Tomas Celizna )

最佳答案

自动加载所有引擎 Assets 文件夹的路径。

默认情况下不加载 Assets 本身。这是可以理解的,因为加载是用 require_tree . 完成的。 ,它从当前文件夹(即主应用程序 Assets 文件夹)加载所有 css/js,但没有说明引擎 Assets 。

简单的解决方案是要求用户在 application.js/css 或其他任何需要的地方要求 js/css。由于路径加载正确,用户只需指定您的 Assets 名称(我建议使用您的引擎名称)。示例:

附加到 main_app/app/assets/javascripts/application.js :

//= require your_engine_name

如果您将 js 拆分到不同的文件中,您的文件 your_engine_name/app/assets/javascripts/your_engine_name.js可能有以下内容:

//= require_tree .

这将加载 your_engine_name/app/assets/javascripts/ 中的所有 js 文件,作为“。”指的是本地文件夹(在本例中是您引擎的 javascript 的文件夹)。

请注意 ActionView::Helpers::AssetTagHelper.register_javascript_expansion config.use_sprockets 时似乎没有任何效果已设置。我希望他们至少会在这种情况下发出警告。

如果您有安装引擎的 rake 任务,那么您可以对 application.js 进行追加。

用户包含它的另一种方法是插入 <%= javascript_include_tag "your_engine_name" %>在 erb 布局中。

我认为没有办法让它自动插入

关于ruby-on-rails - Rails 3.1 引擎的 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5877619/

相关文章:

mysql - 如何设计和测试 Rails 中的大量并发数据?

ruby-on-rails - 如何在 Rails 应用程序中使用长 id?

ruby-on-rails - 为 rails 设置 compass

ruby-on-rails - Ruby on Rails - 带括号的 link_to

ruby - 获取特定接口(interface)的IP

ruby-on-rails - rails : Use library of models

ruby-on-rails-3.1 - 浮点不显示 x 轴标签

ruby-on-rails - 授予 API 访问 Rails 应用程序的最佳身份验证方法

sql - Rails/Postgres 在考虑夏令时开关的情况下查询下午 5 点之后创建的所有记录?

ruby-on-rails - 在 Rails 3.1 on Production (Heroku) 中显示为空白的图像