2

我有一个控制器“组织”,既可以作为普通资源使用,也可以在“管理员”下命名。

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

<%= javascript_include_tag params[:controller] %>

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

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

4

1 回答 1

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,那么减少需要下载的文件数量可能是值得的。

于 2012-06-13T00:52:56.797 回答