具有admin命名空间的控制器特定资产?

时间:2012-06-13 00:29:45

标签: ruby-on-rails ruby-on-rails-3

我有一个控制器“组织”既可作为普通资源使用,也可作为“admin”下的命名空间。

我需要添加一些仅与组织操作相关的javascript,它同时适用于admin命名空间和非admin命名空间。我在指南中读到我应该创建一个文件“organizations.js.coffee”并在我的布局文件中包含这样的内容:

<%= javascript_include_tag params[:controller] %>

问题是params [:controller]包含admin命名空间的管理员。

我应该这样做的正确方法是什么?谢谢!

1 个答案:

答案 0 :(得分:2)

几点。首先,在这种情况下,这应该工作:

<%= javascript_include_tag params[:controller].split('/').last %>

但是,如果你在每个页面上都有这个,并且一个控制器没有JS文件,那么事情就会中断,所以你可能想做:

<% if params[:controller].split('/').last == "organization" %>
  <%= javascript_include_tag "organisation" %>
<% end %>

将其作为辅助方法添加可能是值得的,例如:

module OrganizationHelper
  def organization_javascript
    javascript_include_tag "organization" if params[:controller].split('/').last == "organization"
  end
end

<%= organization_javascript %>

此外,在较新版本的Rails中,您可以使用controller_name代替params[:controller]

您可能还想考虑将organization.js呈现到application.js(这将在Rails 3.1之后的资产管道中自动完成)。如果它包含用户在访问期间可能会遇到的JS,那么减少需要下载的文件数量可能是值得的。

相关问题