如何制作|从<%=#{@ title} |中消失“默认标题%>如果没有标题?

时间:2014-12-22 19:58:11

标签: ruby-on-rails ruby

我正在做Michael Hartl教程并遇到了一个涉及游戏的部分。当我在这个部分时,一个经验丰富的' ruby dude告诉我,我可以摆脱提供功能,而是添加@title以使其更容易。所以在线上(因为我目前正在工作,我的头顶)是:

<%= "#{@title} | " Default title %>

在他建立的网站上,他告诉我,如果没有@title,则会从Home | Default title转到Default title。但是当我删除页面的@title时,它仍然会显示| Default title

如果没有标题,我如何摆脱|

我尝试使用if / else方法做一个帮手,但由于我在rails上很新,我想我要么宰了它,要么以错误的方式处理这个过程。

2 个答案:

答案 0 :(得分:0)

在这里&#39>如何。但我认为这样做是个坏主意。 provide是一种更清晰的标题设置方式。那么为什么不坚持下去呢?你应该将逻辑移离视图,而不是移入视图中。

<title>
  <% if @title %>
    <%= @title %>
  <% else %>
    "Default Title"
  <% end %>
</title>

更精简:

<title>
  <%= @title || "Default Title" %>
</title>

答案 1 :(得分:0)

如果您想要Title | Default titleDefault title,您可以执行以下操作:

<%= (@title ? "#{@title} | " : "") + "Default title" %>

如果您想要TitleDefault title,您可以执行以下操作:

<%= @title || "Default title" %>

如果@title可以是空字符串(但您希望将空字符串视为nil),请将@title替换为@title.presence

<%= (@title.present? ? "#{@title} | " : "") + "Default title" %>

或者:

<%= @title.presence || "Default title" %>