在rails 3中设置页面标题的正确方法是什么。目前我正在做以下工作:
app/views/layout/application.html:
<head>
<title><%= render_title %></title>
<%= csrf_meta_tag %>
app/helpers/application_helper.rb:
def render_title
return @title if defined?(@title)
"Generic Page Title"
end
应用程序/控制器/some_Controler.rb:
def show
@title = "some custom page title"
end
有没有其他/更好的方法来做上面的事情?
发布于 2010-06-22 18:04:54
你可以做一个简单的帮手:
def title(page_title)
content_for :title, page_title.to_s
end
在您的布局中使用它:
<title><%= yield(:title) %></title>
然后从您的模板中调用它:
<% title "Your custom title" %>
希望这能有所帮助;)
发布于 2011-10-31 05:36:40
不需要创建任何额外的函数/帮助器。你应该去看看the documentation。
在应用程序布局中
<% if content_for?(:title) %>
<%= content_for(:title) %>
<% else %>
<title>Default title</title>
<% end %>
在特定的布局中
<% content_for :title do %>
<title>Custom title</title>
<% end %>
发布于 2010-07-01 19:42:31
@akfalcon -我使用了类似的策略,但没有helper..我只需在应用程序控制器中设置默认的@title,然后在布局中使用%=@title%。如果我想覆盖标题,我会像您一样在控制器操作中再次设置它。不涉及魔法,但它工作得很好。我对元描述和关键字也是这样做的。
我实际上正在考虑将它移动到数据库中,这样管理员就可以更改标题,等等,而不必更新Rails代码。您可以创建一个包含内容、操作和控制器的PageTitle模型。然后创建一个帮助器来查找当前正在呈现的控制器/动作的PageTitle (使用controller_name和action_name变量)。如果未找到匹配项,则返回默认值。
@apeacox在模板中设置标题有什么好处吗?我认为将它放在控制器中会更好,因为标题与被调用的操作直接相关。
https://stackoverflow.com/questions/3059704
复制相似问题