在过去的几天里,我一直在寻找这个问题的解决方案。这是一个简单的烦恼,但我不想知道如何做事......
环境:Ruby,Rails,rhtml
问题:当我在rhtml中迭代一个集合时,我希望减少< %%>的数量。和<%=%>我用的标签。以下看起来很臃肿:p>
<% @products.each do |p| %>
<%= @p.name %>
<% end %>
编辑:如何排除&lt;%=%&gt;在街区内?
我更愿意这样做:
<% @products.each do |p|
puts @p.name
end %>
某些情况可能允许使用...但是,我知道我可以用jsp执行此操作:
<% for(int i=0; i<10;i++){
System.out.print(i);
} %>
提前感谢您的意见。
答案 0 :(得分:5)
如果你想更简洁地看一下haml,你的例子就是:
- @products.each do |p|
= @p.name
答案 1 :(得分:2)
<% @products.each do |p|
_erbout << @p.name
end %>
_erbout
是ERB(解析.rhtml模板的类)用于构建其输出的变量的默认名称。这非常难看,对我来说感觉有些笨拙,但它确实有用。
答案 2 :(得分:0)
使用print代替put。
答案 3 :(得分:0)
如果您的视图代码看起来过于膨胀,还有其他几种可能性,具体取决于上下文:
在主文件中:
<%= render(:partial => "product", :collection => products) %>
在部分中,只需使用:
<%= product.name %>
现在这似乎是为了这样一个简单的例子而设计的,但是假设一些更复杂的东西它抽象出循环并使代码更清晰。
答案 4 :(得分:0)
您也可以尝试使用像haml这样的东西来清理模板(以及帮助程序和部分文件)。
答案 5 :(得分:0)
你将不得不在这样的块中使用&lt;%=。您可以使用&lt;%= with block:
来实现所需的可读性<%= @products.map do |p|
p.name
end.join("\n") %>