首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails3-设置页面标题的理想方式

Rails3-设置页面标题的理想方式
EN

Stack Overflow用户
提问于 2010-06-17 15:35:29
回答 9查看 38.9K关注 0票数 71

在rails 3中设置页面标题的正确方法是什么。目前我正在做以下工作:

app/views/layout/application.html:

代码语言:javascript
复制
<head>
  <title><%= render_title %></title>
  <%= csrf_meta_tag %>

app/helpers/application_helper.rb:

代码语言:javascript
复制
def render_title
  return @title if defined?(@title)
  "Generic Page Title"
end

应用程序/控制器/some_Controler.rb:

代码语言:javascript
复制
def show
  @title = "some custom page title"
end

有没有其他/更好的方法来做上面的事情?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-06-22 18:04:54

你可以做一个简单的帮手:

代码语言:javascript
复制
def title(page_title)
  content_for :title, page_title.to_s
end

在您的布局中使用它:

代码语言:javascript
复制
<title><%= yield(:title) %></title>

然后从您的模板中调用它:

代码语言:javascript
复制
<% title "Your custom title" %>

希望这能有所帮助;)

票数 131
EN

Stack Overflow用户

发布于 2011-10-31 05:36:40

不需要创建任何额外的函数/帮助器。你应该去看看the documentation

在应用程序布局中

代码语言:javascript
复制
<% if content_for?(:title) %>
  <%= content_for(:title) %>
<% else %>
  <title>Default title</title>
<% end %>

在特定的布局中

代码语言:javascript
复制
<% content_for :title do %>
  <title>Custom title</title>
<% end %>
票数 52
EN

Stack Overflow用户

发布于 2010-07-01 19:42:31

@akfalcon -我使用了类似的策略,但没有helper..我只需在应用程序控制器中设置默认的@title,然后在布局中使用%=@title%。如果我想覆盖标题,我会像您一样在控制器操作中再次设置它。不涉及魔法,但它工作得很好。我对元描述和关键字也是这样做的。

我实际上正在考虑将它移动到数据库中,这样管理员就可以更改标题,等等,而不必更新Rails代码。您可以创建一个包含内容、操作和控制器的PageTitle模型。然后创建一个帮助器来查找当前正在呈现的控制器/动作的PageTitle (使用controller_name和action_name变量)。如果未找到匹配项,则返回默认值。

@apeacox在模板中设置标题有什么好处吗?我认为将它放在控制器中会更好,因为标题与被调用的操作直接相关。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3059704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档