什么是在rails 3中设置页面标题的正确方法.目前我正在做以下事情:
应用程序/视图/布局/ application.html:
<head>
<title><%= render_title %></title>
<%= csrf_meta_tag %>
Run Code Online (Sandbox Code Playgroud)
应用程序/佣工/ application_helper.rb:
def render_title
return @title if defined?(@title)
"Generic Page Title"
end
Run Code Online (Sandbox Code Playgroud)
应用程序/控制器/ some_controller.rb:
def show
@title = "some custom page title"
end
Run Code Online (Sandbox Code Playgroud)
有没有其他/更好的方法来做上述事情?
And*_*oni 132
你可以一个简单的帮手:
def title(page_title)
content_for :title, page_title.to_s
end
Run Code Online (Sandbox Code Playgroud)
在你的布局中使用它:
<title><%= yield(:title) %></title>
Run Code Online (Sandbox Code Playgroud)
然后从你的模板中调用它:
<% title "Your custom title" %>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助 ;)
gri*_*ble 52
没有必要创建任何额外的函数/帮助器.你应该看看文档.
在应用程序布局中
<% if content_for?(:title) %>
<%= content_for(:title) %>
<% else %>
<title>Default title</title>
<% end %>
Run Code Online (Sandbox Code Playgroud)
在具体的布局中
<% content_for :title do %>
<title>Custom title</title>
<% end %>
Run Code Online (Sandbox Code Playgroud)
Jit*_*its 41
我发现apeacox的解决方案对我不起作用(在Rails 3.0.3中).
相反,我做了......
在application_helper.rb:
def title(page_title, options={})
content_for(:title, page_title.to_s)
return content_tag(:h1, page_title, options)
end
Run Code Online (Sandbox Code Playgroud)
在布局中:
<title><%= content_for(:title) %></title>
Run Code Online (Sandbox Code Playgroud)
在视图中:
<% title "Page Title Only" %>
Run Code Online (Sandbox Code Playgroud)
要么:
<%= title "Page Title and Heading Too" %>
Run Code Online (Sandbox Code Playgroud)
注意,这也允许我们检查是否存在标题,并在视图未指定标题的情况下设置默认标题.
在布局中我们可以做类似的事情:
<title><%= content_for?(:title) ? content_for(:title) : 'This is a default title' %></title>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37977 次 |
| 最近记录: |