我有一些信息,我希望通过使用一些部分来简化。基本上,我想按照
的方式做点什么<%= 2.times { |j| render 'item_expanded', item: @social_json_feed[i + j], index: (i + j) } %>
但是,上面的代码不会呈现部分代码。相反,它返回值“2”两次。如果我将块写为do-end块,它可以像预期的那样工作。
<% 2.times do |j| %>
<%= render 'item_expanded', item: @social_json_feed[i + j], index: (i + j) %>
<% end %>
以我想要的方式产生部分。但是如果do-end块正常工作,那么单行块也应该能够正常工作,对吧?它只是关于单行块如何格式化或者是否更深入Rails魔术?另外,为什么代码的第一个例子两次返回“2”?
答案 0 :(得分:2)
这是因为在第一种情况下,它仅呈现2.times
方法调用的返回值,即2
。您应该只使用第二种表示法。
答案 1 :(得分:1)
如果您添加了对map
的通话,您应该可以将其全部保留在一行。
<%= 2.times.map { |j| render 'item_expanded', item: @social_json_feed[i + j], index: (i + j) } %>