2016-02-04 39 views
1

我一直在个人项目学习与轨道红宝石,并且事情已经相当不错。我已经开始过渡到波兰和部署,并为您所在网站的哪个部分配置标题。我尝试使用已接受的解决方案:http://tinyurl.com/jzqmuw2,但我的标题仍然默认为我的项目名称,该名称不干净。我已经看了其他一些解决方案,其中一些是可以的,但我无法弄清楚为什么这种方法无效。无法设置标题轨4

我在使用JRuby 9.0.4.0(2.2.2)和openjdk 8在ec2 micro t2上进行测试。

相关的代码:

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

<!DOCTYPE html> 

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

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

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

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

$ {root} /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

更改$ {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> 
+0

它实际上是application.html.erb,我输错了。 – BleuGamer

+0

感谢您的标准练习,您的头脑应该是正确的,我只是做了一个小型的一次性rails应用程序来测试这一点。我明白我做了什么,谢谢! – BleuGamer

1

content_for?(:title)返回一个布尔值,如果你有内容或没有。
它不返回实际的内容。 yield(:title)这样做。

变化

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

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

这解决了它,我看到我做了什么。谢谢! – BleuGamer