case statement dilemma ruby​​ / rails helper method

时间:2013-11-30 16:23:44

标签: ruby-on-rails ruby

我正在玩弄了解案例陈述并在rails中使用帮助器。我在视图中有这个代码

<% case %>
  <%  when post.comments.count > 4 %>
    <%= image_tag "fresh.png", size: "28x28" %> 5+ comments
  <%  when post.comments.count > 2 %>
    <%= image_tag "rotten.jpeg", size: "31x31" %> 3+ comments
  <% else %>
<% end %>

它是一段有趣的代码,根据用户对其帖子的评论数量,向用户提供新鲜或腐烂番茄的图片。无论如何,我想使用帮助器来解决我的视图中所有这些混乱的代码

我做了一个帮手方法

  def rotten_tomatoes(post)
    case
      when post.comments.count > 4
       image_tag "fresh.png", size: "28x28"
      when post.comments.count > 2
       image_tag "rotten.jpeg", size: "31x31"
      else
    end
  end

我希望view显示image_tag,并且还会输出显示5条评论或3条评论的字符串,但是当我输入此代码时

  def rotten_tomatoes(post)
    case
      when post.comments.count > 4
       image_tag "fresh.png", size: "28x28"
       "5+ comments"
      when post.comments.count > 2
       image_tag "rotten.jpeg", size: "31x31"
       "3+ comments"
      else
    end
  end

只有字符串在视图中打印出来,而不是图片标签对不起有人知道为什么?

我试过这个

image_tag("fresh.png", size: "28x28")

产生了相同的结果

image_tag "fresh.png", size: "28x28",

产生语法错误

1 个答案:

答案 0 :(得分:1)

  

[A] nyone知道为什么吗?

是。在Ruby中,一段代码的返回值是最后评估的部分。例如,在代码块中:

image_tag "fresh.png", size: "28x28"
"5+ comments"

最后评估的部分是:

"5+ comments"

这就是原因。