在Rails 4中为不同的命名空间使用不同的资产

时间:2016-06-06 10:26:52

标签: ruby-on-rails

我有一个Rails 4应用,它在整个应用程序中使用app/assets/javascriptsapp/assets/stylesheets中的资源。但是,我为应用程序的管理部分创建了一个嵌套资源。我希望管理界面与最终用户看到的不同(不同的布局,不同的资产)。

我尝试在application.css文件中更改以下内容:

*= require_tree .

*= require_directory

但整个应用似乎仍在使用相同的资源。任何人都可以请教我如何在Rails 4应用程序的不同部分使用不同的资源吗?

2 个答案:

答案 0 :(得分:4)

这里的问题不在于您是如何在资产清单中包含文件的,只是您为应用程序的公共和私人/管理部分使用相同的清单。

您应该创建一个名为app/assets/stylesheets/admin.css的新文件,并在其中包含管理布局所需的资源。也许是这样的:

*= require_tree ./admin

然后更改现有的application.css不要使用require_tree .,而是更具体的内容,例如:

*= require_tree ./main

将所有公共CSS文件移动到样式表目录中的该目录中。

最后,您需要为管理页面创建新的布局,或修改应用程序布局,以便样式表和javascript包含的动态基于您正在使用的应用程序的哪个部分。

为简单起见,您可能只想使用管理部分的新布局,称为app/views/layouts/admin.html.erb,然后更新应用程序页面的所有控制器以使用layout :admin

答案 1 :(得分:1)

我知道三种组合

 *= require_tree . # for base asset directory
 *= require_tree ./path # a specific path
 *= require filename # some file