未定义的方法`full_title'

时间:2014-05-13 12:12:34

标签: ruby-on-rails ruby ruby-on-rails-4 title

我收到以下错误:

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文件夹?我在哪里可以输入此代码?

1 个答案:

答案 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