undefined method `full_title' [duplicate]

不想你离开。 提交于 2019-12-07 15:07:07

问题


I am getting the following error:

undefined method `full_title'

On this line:

 <title><%= full_title(yield(:title)) %></title>

On my layouts file:

<!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>

I am trying to do something similar to Mike Hartle rails tutorial with the page titles except I am not using tests. So I have not created a support file in the spec folder. I actually have no spec folder. I believe not having the support file with this code:

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

Is causing the error. What is the proper way to fix this is you do not want to create tests and hence don't want a spec folder? Where can I put this code?


回答1:


Any method accessible to the views directly has to go to the helper.

Since you are trying to access this method in your layouts, put your code in the application_helper.rb file.

All helpers are modules only.

If you don't have the file, create one in 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

Then, include ApplicationHelper in application_controller.rb



来源:https://stackoverflow.com/questions/23630949/undefined-method-full-title

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!