无法为rails 4设置标题

时间:2016-02-04 16:36:21

标签: html ruby-on-rails ruby erb

我一直在用铁轨学习ruby的个人项目,事情进展顺利。我已经开始过渡到优化和部署,并为您所在的网站部分配置标题。我在http://tinyurl.com/jzqmuw2处尝试了已接受的解决方案,但我的标题仍默认为我的项目名称不干净。我已经看了一些其他的解决方案,其中一些是可以的,但我无法弄清楚为什么这不起作用。

在我测试的时候,我在ec2 micro t2上使用JRuby 9.0.4.0(2.2.2)和openjdk 8。

相关代码:

$ {根} /homepage/index.html.erb

<!DOCTYPE html>

<head>
  <title>
    <%- title "BleuEngine" %>
  </title>
</head>

<body>
  <h1>BleuEngine</h1>
  <p>Website for BleuEngine</p>
</body>

$ {根} /app/helper/application_helper.rb

module ApplicationHelper
  # Setting titles for each page
  def title(page_title)
    content_for(:title) { page_title }
  end
end

$ {根} /app/views/layouts/application.html.erb

<!DOCTYPE html>
<html>
<head>
  <title><%= content_for?(:title) ? content_for?(:title) : "BleuEngine" %></title>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <%= csrf_meta_tags %>
</head>
<body>

<%= yield %>

</body>
</html>

编辑: Layouts.html实际上是application.html.erb。固定

2 个答案:

答案 0 :(得分:2)

将$ {root} /homepage/index.html.erb视图更改为:

<%- title "Whatever title you want to appear on this page" %>

<h1>BleuEngine</h1>
<p>Website for BleuEngine</p>

您的视图中不需要<head>内容,因为它应该在您的布局文件中。此外,您不需要<body>代码,因为您的视图是在布局文件的<%= yield %>行中的正文标记之间插入的。

最后,将标题行添加到布局文件$ {root} /app/views/layouts/application.html.erb的Head部分以呈现标题。

<title><%= content_for?(:title) ? yield(:title) : "BleuEngine" %></title>

答案 1 :(得分:1)

如果你有内容,

content_for?(:title)会返回一个布尔说明 它不会返回实际内容。 yield(:title)就是这么做的。

更改

<title><%= content_for?(:title) ? content_for?(:title) : "BleuEngine" %></title>

<title><%= content_for?(:title) ? yield(:title) : "BleuEngine" %></title>