2009-03-26 4 views
1

は常にtrueを返すと、消去、アレイ全体ブロックは常に

<% users.delete_if do |user| %> 
    <% false %> 
<% end %> 

を一方

<% 
users.delete_if do |user| 
    false 
end 
%> 

作品を、配列を削除しないだろうtrueを返します。

私は何とか私のビューでdelete_ifステートメントを使用し、まだhtmlを挿入することができますか?

おかげ

答えて

6

あなたはあなたの意見に全くデータを変更すべきではない - 代わりにあなたのコントローラやモデルでこれを行います。データベースの現在の状態を反映し、変更するのではなく、ビューを使用します。

これらの場所のいずれかでコードの2番目のバージョンを使用すると、この問題は解消されます。

1

私はあなたが最初のフォームで "yield"を使うとテストしなければならないと思います。

<% users.delete_if do |user| %> 
    <% yield false %> 
<% end %> 

しかし、最初のポスターによれば、ビューからデータを変更しないでください。副作用インビューアスペクトを無視

2

は、ここでなぜブロック「戻り」の値である:生成された印刷ステートメントがあるERBテンプレートの一部としての「%>」との間のコードを生成し"<% end"この生成されたコードによって残された値は、ブロック内の最終的なステートメント/式、したがってその値として使用されます。

関連する問題