基本上有一个YAML产品文件
# Product - Granola Bar
- title : "Granola Bar"
excerpt : "Comes in several amazing varieties including nut, and delicious fruit."
description : "Comes in several amazing varieties including nut, and delicious fruit."
image : "granola-bar.jpg"
cost : "3.50"
discount : "2.50"
stock : "100"
ingredients :
- value : key
# Product - Granola Bar
- title : "Hazelnut Spread"
excerpt : "Chocolate"
description : "Chocolate"
image : "hazelnut-spread.jpg"
cost : "2.50"
discount : "1.50"
stock : "100"
ingredients :
- value : key
现在,当我遍历这些内容时,内容将被附加到前一个内容变量。
即。 “有几种令人惊奇的品种,包括坚果和美味的水果.3.50” “有几种令人惊奇的品种,包括坚果和美味的水果.3.50巧克力2.50”
应该是 “有几种令人惊奇的品种,包括坚果和美味的水果.3.50” 然后 “巧克力2.50”
-# Create new array for the thumbnails
- thumbnails = []
-# Loop through the array
- data.products.each do | product |
-# Content
- content_for :content do
-# Excerpt
= product.excerpt
-# Cost
= product.cost
- content = yield_content :content
- thumbnails << { :"data-src" => "holder.js/300x200/auto",
:caption => content,
:title => product.title }
Ruby非常新,所以不确定要搜索什么 - 循环中的可变变量?我尝试在循环之前推送content = nil,并且在每次传递时也尝试取消设置
任何帮助表示感谢。
屏幕显示正在发生的事情 - 显然不应该在第二个缩略图中加倍
使用正确的版本编辑 - 我想保存Content_For以推送到Partial。很抱歉将此问题排除在原始问题之外。
答案 0 :(得分:2)
content_for
用于捕获在其他地方使用的内容。
IE在您的应用程序布局中有一个yield_content :title
,并将其设置为当前呈现的部分:
# index.haml
- content_for :title, "I'm on the index page"
你的例子根本不应该使用content_for
!它应该只是将字符串呈现在输出中:
- data.products.each do |product|
= product.excerpt
= product.cost
如果你想在img_tag
助手或类似的东西中使用那个输出,那么如果逻辑更复杂,那么使用辅助方法生成内容或将其放入自己的部分中。
您也可以在视图代码中分配新变量,稍后再使用它们。
- caption = "#{product.excerpt} #{product.cost}"
我觉得你的例子中根本不需要这样的东西!也许那是因为你实际上从未在任何地方使用thumbnails
......
答案 1 :(得分:-1)
最后我改为使用capture_html
-# Loop through the array
- data.products.each do | product |
-# Content
- capture = capture_html do
-# Excerpt
%p
= product.excerpt
-# Page Name
- page = product.title.downcase.gsub( /[^a-z0-9\- ]/, ' ').gsub( / /, '-' )
-# Button
= partial "bootstrap/css/button",
:locals => { :color => "primary",
:content => "View Product",
:extraClass => "pull-right",
:href => "/shop/#{ page }" }
-# Cost
%p.text-left.price
£
= product.cost
.clearfix
- thumbnails << { :"data-src" => "holder.js/300x200/auto",
:caption => capture,
:title => product.title }