每页的动态标题

时间:2014-01-24 12:17:28

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

我正在尝试为我的应用程序的每个页面制作动态标题。

我的方法: 在application.html.erb中我设置了这个:

<title><%= titles %></title>

我在ApllicationHelper.rb

上添加了这个
  def titles
    if request.original_fullpath == "/"
      return "Find Web Designers and Developers • AwesomeWeb"
    end 
  end

我收到以下错误:

ArgumentError in HomeController#index
invalid byte sequence in US-ASCII

我不确定这是否是一个好方法。但我想你明白我想做什么。即使这种方法对我很好。有关如何使这项工作的任何建议?

由于

2 个答案:

答案 0 :(得分:4)

有一个更好的方法:content_for

在您的application.html.erb中:

<title><%= yield :title %></title>

在您的观看中(例如/users/new.html.erb)

<% content_for :title do %>
  Create New User
<% end %>

无需在application_helper中对所有可能的值进行硬编码。

答案 1 :(得分:1)

问题是点符号不是ASCII符号。因此,根据Ruby版本,您可能需要指定文件application_helper是不同的编码。

添加以下评论

# encoding: utf-8

位于文件的最顶部。

关于这种方法,我建议在视图中确定标题的内容。您可以创建一个存储标题

的简单助手
def title(string = nil)
  @_title = string if string
end

然后在您的视图中将其用作setter

<% title "Find Web Designers and Developers • AwesomeWeb" %>
在布局中

,将其用作吸气剂

<title><%= title %></title>