0

简单的问题,如果我有类似的东西,我是 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 三元语句,但找不到我正在寻找的类似的东西。谢谢!

4

2 回答 2

2

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

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

帮手:

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

根据您的域,在哪里read_or_unread以及更有意义地命名。SomethingHelper如果您有其他复杂的逻辑,您也可以使用演示者模式。

于 2013-06-01T05:00:31.340 回答
1

如果只是字符串就不需要转义了,三进制如下:

<p><%= arr.thing ? 'Read' : 'Unread' %></p>
于 2013-06-01T04:35:23.827 回答