【问题标题】:undefined method `full_title' [duplicate]未定义的方法`full_title' [重复]
【发布时间】:2014-05-13 12:12:33
【问题描述】:

我收到以下错误:

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 文件夹中创建支持文件。我实际上没有规范文件夹。我相信没有包含此代码的支持文件:

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

导致错误。解决此问题的正确方法是您不想创建测试,因此不想要规范文件夹?我可以把这段代码放在哪里?

【问题讨论】:

  • 你是不是把它放在一个模块里,然后把那个模块放在 helpers 目录下?
  • 我是在根目录还是在哪里制作模块?它并没有说这是我的问题......

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


【解决方案1】:

视图可以直接访问的任何方法都必须转到帮助程序。

由于您尝试在布局中访问此方法,请将您的代码放入 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

然后,include ApplicationHelper 在 application_controller.rb 中

【讨论】:

  • 我没有那个文件,我应该创建它吗?如果是在哪个文件夹下?
  • 所有助手都在app/helpers文件夹下。 application_helper 是默认生成的。
  • 谢谢!我早该知道!仍在学习感谢您如此耐心,这是我从未想过的事情!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-25
  • 2013-09-13
  • 2012-09-24
  • 1970-01-01
  • 2016-11-17
相关资源
最近更新 更多