【问题标题】:Ruby on Rails : conditionally load scripts?Ruby on Rails:有条件地加载脚本?
【发布时间】:2014-09-01 04:31:07
【问题描述】:

嘿,

我希望能够将我所有页面的脚本放在我的 application 布局中,并为相应的页面加载每个脚本。

我遇到了这个 [问题][1],我认为我可以将脚本放在部分内容中,并按照上述问题中指示的方式进行操作,但是我正在尝试找到解决问题的最佳方法scripts。

会不会是这样的:

yield :scripts if condition

或

unless condition
 content_for scripts do
 end
end 

或任何其他“最佳”方式?


注意:每个页面都有自己的脚本保存在与页面相同的名称下。


【问题讨论】:

  • 这是一种解决方案:stackoverflow.com/questions/12828767/…
  • 有许多可行的方法,但选择最佳的方法取决于许多条件。有条件的yield 不是一个坏计划。
  • 这是一个可能的解决方案,但如您所见,我正在寻找最简单的解决方案。 2 : 我不需要检查现有文件,所有文件都存在,但我需要检查是否存在具有相同页面名称的文件。还有其他想法吗? @DamienRoche
  • 你能提供我似乎忽略的其他方法吗?因为我正在寻找最简单的也就是最好的。 @tadman
  • 它正在工作,谢谢。 :)

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


【解决方案1】:

已解决

我依靠 @damien 在 cmets 的建议以及他提供的 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 文件,就会包含它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多