如果/ else输出html,Rails简写

时间:2016-05-10 20:50:41

标签: ruby-on-rails ruby-on-rails-4 if-statement

现在我使用

<%= @inbox.automatic_reconciliation ? "<i class='fi-play-circle'></i>" : "<i class='fi-pause'></i>" %>

我的视图会在页面上显示实际代码而不是图标。我尝试过使用像.to_html这样的方法,但无济于事 - 我错过了什么?

3 个答案:

答案 0 :(得分:0)

尝试使用html_safe方法。

<%= @inbox.automatic_reconciliation ? "<i class='fi-play-circle'></i>".html_safe : "<i class='fi-pause'></i>".html_safe %>

documentation

答案 1 :(得分:0)

如果您坚持这样做,请使用raw帮助程序,该帮助程序优先于html_safe

<%= raw @inbox.automatic_reconciliation ? "<i class='fi-play-circle'></i>" : "<i class='fi-pause'></i>" %>

到目前为止,更好的解决方案是从您的视图中删除此逻辑。创建一个辅助方法并简单地调用它:

<i class="<%= automatic_reconciliation_class %>"></i>

答案 2 :(得分:0)

您可以使用三元运算符使其变得简单:

<i class="<%= @inbox.automatic_reconciliation ? "fi-play-circle" : "fi-pause" %>"></i>

这会直接在类名周围嵌入条件,这会清理代码很多。只有类的名称可能会受到影响,因此HTML的其余部分将与偶然的更改隔离,这些更改可能会在将来导致维护问题。