2011-01-23 88 views
6

我试图通过在railsforzombies中做一些实验来学习rails,我在lab3中(如果声明)。如果在rails中声明

它有两个表:

  • 僵尸{ID,名称,墓地}
  • 鸣叫{ID,状态,zombie_id}

目的 在每个块如果僵尸有超过1条推文,请打印出SMART ZOMBIE

<% zombies = Zombie.all %> 

<ul> 
    <% zombies.each do |zombie| %> 
    <li> 
     <%= zombie.name %> 
     # add if statement here 
    </li> 
    <% end %> 
</ul> 

我试过一些解决方案,但我弄错了。

回答

6

<%= 'SMART ZOMBIE' if zombie.tweets.size > 1 %>

注:计数/长度/大小都是subtly different

编辑:超过1

+1

哦是的,`.any?`会更好。 – scragz 2011-01-23 21:54:01

+0

哦,是的,它的工作原理,我认为我很难理解ruby/rails的语法。我怎么做到这一点:“在每个块中,让僵尸的名字链接到它的编辑页面” - 我试过了:<%= link_to“编辑”,edit_tweet_path(tweet)%> .. – SHUMA 2011-01-23 22:44:55

8
<% if zombie.tweets.size > 1 %> 
    Smart Zombie! 
<% end %> 
1

这应该工作:

<ul> 
    <% zombies.each do |zombie| %> 
    <li> 
     <%= link_to zombie.name, edit_zombie_path(zombie) %> 
     <%= 'Smart Zombie' if zombie.tweets.count > 1 %> 
    </li> 
    <% end %> 
</ul> 
5

这个作品!

<% zombies = Zombie.all %> 
<ul> 
    <% zombies.each do |zombie| %> 
    <li> 
     <%= zombie.name %> 
     <%= 'SMART ZOMBIE' if zombie.tweets.count > 1 %> 
    </li> 
    <% end %> 
</ul> 
1

我交替地做了以下工作并传递,很想听听这种情况是否糟糕。


在每个块,如果一个僵尸有超过1个鸣叫,打印出SMART ZOMBIE

<% zombies = Zombie.all %> 

<ul> 
    <% zombies.each do |zombie| %> 
    <li> 
     <%= zombie.name %> 
     if zombie > 1 tweet put "SMART ZOMBIE" 
    </li> 
    <% end %> 
</ul> 
1
<ul> 
    <% zombies.each do |zombie| %> 
    <li> 

     <%= zombie.name %> 
     <% if zombie.tweets.size > 1 %> 
     SMART ZOMBIE 
     <% end %> 
    </li> 
    <% end %> 
</ul> 
0
<% if zombie.tweets.count > 1 %> 
    <em> SMART ZOMBIE </em> 
<% end %> 

这为我工作

0

我试了一下,有用!

<ul> 
    <% zombies.each do |zombie| %> 
     <li> 
      <%= zombie.name %> 
      <% if zombie.tweets.length > 1 %> 
       SMART ZOMBIE 
      <% end %> 
     </li> 
    <% end %> 
</ul>