0

そのため、Project というモデルが 1 つあり、そのモデルに対して Proposal というネストされたモデルがあります (したがって、すべてのプロジェクトには複数の提案があり、各提案は 1 つのプロジェクトにのみ属します)。

提案の 1 つがプロジェクトに勝利したかどうかを確認するだけの「勝利」と呼ばれる提案の列があります。プロジェクトの表示ページでこれを参照したいのですが、コードに少し困惑しています。

私が本当にやりたいのは、提案のいずれかが「受賞」ステータスを持っているかどうかを確認することです

これは、プロジェクトの表示ビューで試していることですが、うまくいきません:

<% if @project.proposals.winning %>
   SUCCESSFUL
<% end %>

これはかなり初歩的なことだと思いますが、理解するのに苦労しています、ありがとう!

4

3 に答える 3

1

これは次の理想的な候補です。

<% if @idea.proposals.any? {|proposal| proposal.winning? } %>

Enumerable.any?いずれかの配列要素に対してブロックがtrueを返す場合、trueを返します。

于 2012-07-13T10:51:53.103 に答える
1

代わりに使用してください:

<% if @idea.proposals.count{|a| a.winning } > 0 %>

または、Idea モデルでメソッドを作成することをお勧めします。

def has_winning?
  proposals.count{|a| a.winning } > 0
end
于 2012-07-12T19:20:59.957 に答える
0

さて、別の投稿でこのコードを見つけましたが、うまくいっているようですが、それが最善の方法であるかどうかはわかりません:

<% if @idea.proposals.map(&:winning).flatten %>
于 2012-07-12T19:14:10.403 に答える