是否有可能逃避<%=%>?

时间:2013-06-01 04:28:19

标签: ruby-on-rails ruby-on-rails-3

简单的问题,我是Rails 3的新手,如果我有类似的东西:

<% @array.each do |arr| %>
   <%= arr.thing %>
<% end %>

如果我想做这样的事情,我将如何逃避清洁:

<% @array.each do |arr| %>
   <p><%= if arr.thing 'Read' else 'Unread' %></p> < All in 1 line prints whatever value to a <p></p>
<% end %>

因此,我不必因为

而变得更加混乱
<% @array.each do |arr| %>
   <%= if arr.thing %>
     <p>Read</p>
   <% else %>
     <p>Unread</p>
   <% end %>
<% end %>

这是否可能,我尝试使用谷歌搜索Rails 3三元语句,但我找不到像我一样寻找的合成语。谢谢!

2 个答案:

答案 0 :(得分:2)

这种事情最好通过助手处理。

<p><%= read_or_unread(arr.thing) %>></p>

助手:

class SomethingHelper
  def read_or_unread(thing)
    thing ? 'Read' : 'Unread'
  end
end

read_or_unreadSomethingHelper根据您的域名进行更有意义的命名。如果您有其他复杂的逻辑,也可以使用presenter模式。

答案 1 :(得分:1)

如果它只是一个字符串,你不需要逃避它,三元组如下:

<p><%= arr.thing ? 'Read' : 'Unread' %></p>