我有一个控制器"organizations“,它既可以作为普通资源使用,也可以在"admin”下使用名称空间。
我需要添加一些只与组织操作相关的javascript,它既适用于admin名称空间,也适用于非admin名称空间。我在指南中读到,我应该创建一个文件"organizations.js.coffee“,并在我的布局文件中包含类似以下内容:
<%= javascript_include_tag params[:controller] %>问题是params:controller包含admin名称空间的/admin。
我应该怎么做才是正确的呢?谢谢!
发布于 2012-06-13 08:52:57
有几点。首先,在这种情况下,这应该是可行的:
<%= 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及更高版本中的assets管道中自动完成)。如果它包含用户在访问期间可能会访问的JS,那么减少需要下载的文件数量可能是值得的。
https://stackoverflow.com/questions/11006705
复制相似问题