Chr*_*ssl 237
在您的视图中执行以下操作:
<% content_for :title, "Title for specific page" %>
<!-- or -->
<h1><%= content_for(:title, "Title for specific page") %></h1>
Run Code Online (Sandbox Code Playgroud)
以下是布局文件:
<head>
<title><%= yield(:title) %></title>
<!-- Additional header tags here -->
</head>
<body>
<!-- If all pages contain a headline tag, it's preferable to put that in the layout file too -->
<h1><%= yield(:title) %></h1>
</body>
Run Code Online (Sandbox Code Playgroud)
也可以将content_for和yield(:title)语句封装在辅助方法中(正如其他人已经建议的那样).但是,在这种简单的情况下,我喜欢将必要的代码直接放入特定的视图中,而无需自定义帮助程序.
ops*_*psb 118
这是我喜欢使用的简单选项
在你的布局中
<head>
<title><%= @title %></title>
</head>
Run Code Online (Sandbox Code Playgroud)
在页面模板的顶部(第一行)
<% @title="Home" %>
Run Code Online (Sandbox Code Playgroud)
由于解析布局和页面模板的方式,因此在呈现布局之前评估@ title ="Home".
Aup*_*ajo 49
最佳做法是使用content_for.
首先,添加几个辅助方法(即粘贴在app/helpers/application_helper.rb中):
def page_title(separator = " – ")
[content_for(:title), 'My Cool Site'].compact.join(separator)
end
def page_heading(title)
content_for(:title){ title }
content_tag(:h1, title)
end
Run Code Online (Sandbox Code Playgroud)
然后在布局视图中,您可以简单地使用:
<title><%= page_title %></title>
Run Code Online (Sandbox Code Playgroud)
......并且在视图中:
<%= page_heading "Awesome" %>
Run Code Online (Sandbox Code Playgroud)
这种方式的优点是允许你在标题的h1标签贴在哪里,并保持你的控制器很好,没有讨厌的@title变量.
bou*_*uby 20
@opsb的改进和更完整的@FouZ形式:
在application.html.erb:
<title><%= @title || "Default Page Title" %></title>
Run Code Online (Sandbox Code Playgroud)
在视图erb文件或其控制器中:
<% @title = "Unique Page Title" %>
Run Code Online (Sandbox Code Playgroud)
如果没有关于您试图满足的用例或要求的进一步细节,我可以考虑几种选择:
1)在一个布局页面中切换标题并使用存储的辅助方法 application_helper.rb
<title><%= custom_title %></title>
Run Code Online (Sandbox Code Playgroud)
这种方法将为每个布局页面提供一个唯一的标题.
2)Railscasts建议使用partial来加载HEAD标签之间显示的内容
3)如果需要在加载事件后更改标题,请使用javascript/ajax调用来操作DOM.
也许你真的不想改变title元素标记的内容.也许您确实需要某种面包屑,以便您的用户始终知道他们相对于您网站的导航层次结构的位置.虽然我对goldberg插件的处理方式做得很好,但我确信还有其他方法可以实现相同的功能.
这种简单的方法可以设置默认标题,但也可以让您随时覆盖它。
在app/views/layouts/application.html.erb:
<title><%= yield(:title) || 'my default title' %></title>
Run Code Online (Sandbox Code Playgroud)
要覆盖该默认值,请将其放置在您喜欢的任何视图中
<% content_for :title, "some new title" %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76755 次 |
| 最近记录: |