我有一个rails项目。
在application.html.slim
我有:
doctype html
html
head
title RailsMongoidPj
= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true
= javascript_include_tag "application", "data-turbolinks-track" => true
= csrf_meta_tags
meta content="width=device-width, initial-scale=1.0" name="viewport"
= yield(:html_head)
body
= yield
在控制器SearchController
中,它有一个方法:
def javascript(*files)
content_for(:html_head) do
javascript_include_tag(*files)
end
end
helper_method :javascript
此控制器还有一个方法new
,其中包含相应的视图,其内容为:
= javascript('/vendor/assets/javascript/handelbars.runtime.js')
- content_for :html_head do
script#entry-template type="text/x-handlebars-template"
| template content
但我有一个错误:
undefined method `content_for' for #<SearchFlickrController:0x007f8e4f2bae78>
Extracted source (around line #3):
1 / search flickr api page
2
3 = javascript('/vendor/assets/javascript/handelbars.runtime.js')
4
5 - content_for :html_head do
6 script#entry-template type="text/x-handlebars-template"
为什么方法content_for
未定义?它不是标准rails
方法吗?
答案 0 :(得分:2)
content_for
是一种帮助方法。您在视图中使用content_for
,而不是在控制器中。因此,使用content_for
的方法的正确位置是帮助程序(例如app/helper/search_helper.rb
):
module SearchHelper
def javascript(*files)
content_for(:html_head) do
javascript_include_tag(*files)
end
end
end