【发布时间】:2015-04-09 16:46:39
【问题描述】:
我正在使用 Ruby On Rails 4,并使用 RefineryCMS。官方说,RefineryCMS 只适用于 Rails 3.2,但核心团队在 Github 上表示,最新版本的 RefineryCMS 应该适用于 Rails 4。
我需要添加一些自定义实例方法,所以我复制了文件:
cp vendor/bundle/ruby/2.0.0/bundler/gems/refinerycms-c8d8680bd4f5/pages/lib/refinery/pages/instance_methods.rb lib/refinery/pages/
也许这对我来说有点懒惰,但我认为这会很快。然后我添加了一个方法,并在模板中调用它,但是我得到了未定义的方法”错误。在这个文件中:
app/views/refinery/_header.html.erb
我目前有这个代码:
<div class="col-sm-24">
<%= Refinery::Pages::MenuPresenter.new(refinery_menu_pages, self).to_html %>
</div>
<%= SubMenuPresenter.new(build_sub_menu_pages(@current_sub_menu_pages), self).to_html %>
在 instance_methods.rb 中,我目前有这个代码:
def refinery_menu_pages
puts " hi "
puts " hi "
puts " hi "
puts " hi "
puts " hi "
puts " hi "
puts " hi "
Menu.new Page.fast_menu
end
def build_sub_menu_pages(current_sub_menu_pages)
puts " inside of build_sub_menu_pages "
Menu.new current_sub_menu_pages
end
我可以在终端中看到所有的“hi”,所以我知道这个文件正在被读取。
SubMenuPresenter 简单定义为:
class SubMenuPresenter < Refinery::Pages::MenuPresenter
end
我最终会自定义 HTML/CSS,但我还没有做到这一点。
错误是:
undefined method `build_sub_menu_pages'
它指向模板中的这一行:
<%= SubMenuPresenter.new(build_sub_menu_pages(@current_sub_menu_pages), self).to_html %>
但是,如果看到上面的方法,怎么可能看不到方法,正如终端中显示的“hi”所证明的那样?
【问题讨论】: