将始终返回true并擦除整个数组
<% users.delete_if do |user| %>
<% false %>
<% end %>
另一方面
<%
users.delete_if do |user|
false
end
%>
有效并且不会删除数组。
我可以以某种方式在我的视图中使用delete_if语句,仍然可以插入html吗?
由于
答案 0 :(得分:6)
您不应该在视图中修改数据 - 而是在控制器或模型中执行此操作。仅使用视图来反映数据库的当前状态,而不是更改它。
如果您在其中任何一个地方使用代码的第二个版本,则此问题将消失。
答案 1 :(得分:2)
忽略视图中的副作用方面,这里是为什么块“返回”一个值:生成的print语句作为ERB模板生成代码之间的一部分“%>
”和“<% end
”。此生成的代码留下的任何值都将用作块中的最终语句/表达式,从而用作其值。
答案 2 :(得分:1)
我想,如果你在第一种形式中使用“yield”,我将不得不测试它,它会起作用。
<% users.delete_if do |user| %>
<% yield false %>
<% end %>
但是,正如第一张海报所说,你不应该从视图中更改数据。