Ruby on Rails:有条件地加载脚本?

时间:2014-07-10 17:20:17

标签: ruby-on-rails ruby partial-views yield

我希望能够把我的所有网页都放到一起。我的application布局中的脚本,并为适当的页面加载每个脚本。

我遇到了这个[问题] [1],我认为我可以把脚本放在局部内部并按照上述问题中指出的方式进行,但是我试图找到最好的scripts的方式。

会是这样的:

yield :scripts if condition

unless condition
 content_for scripts do
 end
end 

或任何其他 最佳'方式?


注意:每个页面都有自己的脚本,并以相同的页面名称保存。


1 个答案:

答案 0 :(得分:1)

<强>解决

我依赖@damien的建议,在他提供的link评论中提出这样的建议:

在我的助手中:

def javascript_exists?(script)
  script = "#{Rails.root}/app/assets/javascripts/#{[params[:controller], params[:action]].join('_')}.js"
  File.exists?(script) || File.exists?("#{script}.coffee") 
end

在我的应用程序布局中:

  <%= javascript_include_tag [params[:controller], params[:action]].join('_'), :media => "all"  if javascript_exists?([params[:controller], params[:action]].join('_')) %>

因此,对于每个控制器以及控制器中的每个操作,如果存在,则包含相应的 .js 文件。