Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 钢轨:屈服前的干含量_Ruby On Rails_Partial_Yield_Content For - Fatal编程技术网

Ruby on rails 钢轨:屈服前的干含量

Ruby on rails 钢轨:屈服前的干含量,ruby-on-rails,partial,yield,content-for,Ruby On Rails,Partial,Yield,Content For,我有一个部分需要包括一些js:view/main/\u address\u slider.html.erb <% content_for :scripts do %> <%= javascript_include_tag 'swipeslider/dist/idangerous.swiper.min' %> <%= javascript_include_tag 'fineuploader' %> <% end %> ... <% cont

我有一个部分需要包括一些js:view/main/\u address\u slider.html.erb

<% content_for :scripts  do %>
<%= javascript_include_tag 'swipeslider/dist/idangerous.swiper.min' %>
<%= javascript_include_tag 'fineuploader' %>
<% end %>
...
<% content_for :scripts  do %>
<%= javascript_include_tag 'swipeslider/dist/idangerous.swiper.min' %>
<%= javascript_include_tag 'mycustomplugin' %>
<% end %>
<% render 'address_slider' %>
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<meta name="description" content="Social Network">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title><%= @meta_title %></title>
<%= yield :meta %>
<%= yield :styles %>
<%= yield :scripts %>
</head>
<body>
<div id="page">
<%= display_flash %>
<%= yield %>
</div>
</body>
</html>
呈现的页面包含两次SwipSlider/dist/idangerous.swiper.min的js导入

<head>
<meta charset="utf-8">
<meta name="description" content="Social Network">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>....</title> 
<script src="/assets/swipeslider/dist/idangerous.swiper.min.js?body=1" type="text/javascript"></script>
<script src="/assets/swipeslider/dist/idangerous.swiper.min.js?body=1" type="text/javascript"></script>
<script src="/assets/fineuploader.js?body=1" type="text/javascript"></script>
<script src="/assets/mycustomplugin.js?body=1" type="text/javascript"></script>
</head>

.... 

我可以在我的版面屈服之前从内容中删除副本吗?

您可以这样使用帮助器:

def yield_something_once
  unless @yielded_something
    @yielded_something = true
    content_for :something
  end
end

或者在
yield:smth
之后立即使用(:smth,)的
content\u来清除它。

我找到了一个修复方法,但看起来很糟糕

<% s = yield(:scripts)  %>
<%= (((s.split("<script").uniq.collect{|x| x.strip}).reject(&:empty?)).map! { |word| "<script #{word}" }).join("\n").html_safe %>


不完全是因为您试图说,如果您已经屈服了:脚本,不要再屈服了。但是我想堆叠:scripts的所有内容(因为它们可能不同),然后遍历整个:script内容并删除副本。没有这样的功能。您必须将脚本数组定义为实例变量,并使用助手添加脚本。或者你可以试试
这里有额外的html
(我没有试过,但似乎还可以)。对不起,我刚刚读到,默认情况下,
content\u可以像你想要的那样工作(在4.1中,没有检查其他版本)。如果多次调用,它会连接结果:感谢prcu提供的信息。我正在使用旧版本的rails,但我计划很快迁移。
<% s = yield(:scripts)  %>
<%= (((s.split("<script").uniq.collect{|x| x.strip}).reject(&:empty?)).map! { |word| "<script #{word}" }).join("\n").html_safe %>