包括" Yield"在Ruby on Rails中的Application Helper

时间:2015-10-10 17:54:27

标签: helper railstutorial.org yield

在Michael Hartl的Rails教程中,他建议你创建一个" Full Title"帮手如下:

module ApplicationHelper

  # Returns the full title on a per-page basis.
  def full_title(page_title = '')
    base_title = "Ruby on Rails Tutorial Sample App"
    if page_title.empty?
      base_title
    else
      page_title + " | " + base_title
    end
  end
end

然后将以下内容添加到application.html.erb文件中:

<title><%= full_title(yield(:page_title)) %></title>

以上不是人类可读的,难以解析。这将更容易理解,并将封装在帮助程序中生成标题的完整逻辑。为什么不将yield移到帮助器中并使用类似的东西:

<title><%= full_title(:page_title) %></title>

是否存在反对放置&#34; yield&#34;的Ruby / Rails惯例?在帮助者中?

1 个答案:

答案 0 :(得分:1)

目前还没有惯例,但你仍然可以改进一点

#application.html.erb
<head>
    <title>Ruby on Rails Tutorial Sample App<%= yield :title %></title>
</head>

#application_helper.rb
def title(title)
    content_for(:title) { " | #{title}" }
end

#Any page
<% title "My title" %>
#or a translation
<% title t("titles.my_title") %>