我收到以下错误:
undefined method `full_title'
在这一行:
<title><%= full_title(yield(:title)) %></title>
在我的布局文件中:
<!DOCTYPE html>
<html>
<head>
<title><%= full_title(yield(:title)) %></title>
<%= stylesheet_link_tag "application", media: "all",
"data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
<%= csrf_meta_tags %>
</head>
<body>
<%= render 'layouts/header' %>
<div class="container">
<%= yield %>
<%= render 'layouts/footer' %>
</div>
</body>
</html>
我正在尝试使用页面标题执行与Mike Hartle rails教程类似的操作,除了我没有使用测试。所以我没有在spec文件夹中创建支持文件。我实际上没有spec文件夹。我相信没有这个代码的支持文件:
def full_title(page_title)
base_title = "Ruby on Rails Tutorial Sample App"
if page_title.empty?
base_title
else
"#{base_title} | #{page_title}"
end
end
导致错误。解决这个问题的正确方法是你不想创建测试,因此不想要spec文件夹?我在哪里可以输入此代码?
答案 0 :(得分:5)
视图可以访问的任何方法都必须转到帮助程序。
由于您尝试在布局中访问此方法,请将代码放在application_helper.rb
文件中。
所有助手都只是模块。
如果您没有该文件,请在app/helpers
module ApplicationHelper
def full_title(page_title)
base_title = "Ruby on Rails Tutorial Sample App"
if page_title.empty?
base_title
else
"#{base_title} | #{page_title}"
end
end
end
然后,在application_controller.rb
中include ApplicationHelper