我在我们的网站上使用refinerycms让技术水平较低的员工更新内容.在gem中,它们有一个Page类,用于映射站点上的每个顶级页面.我想在这个Page类上使用acts_as_taggable gem.现在我可以将acts_as_taggle声明直接添加到page.rb文件中,但是我必须维护一个单独的git repo来跟踪我的版本和官方发行版之间的差异.
基于SO的其他一些问题,我创建了一个初始化器和扩展器,如下所示:
LIB/page_extensions.rb:
module Pants
module Extensions
module Page
module ClassMethods
def add_taggable
acts_as_taggable
end
end
def self.included(base)
base.extend(ClassMethods).add_taggable
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
配置/初始化/ pants.rb
require 'page_extensions'
Page.send :include, Pants::Extensions::Page
Run Code Online (Sandbox Code Playgroud)
应用程序/视图/布局/ application.html.erb
...
Tags: <%= @page.tag_list %>
Run Code Online (Sandbox Code Playgroud)
我第一次从服务器请求页面时它正确输出页面上的所有标签.但是,如果我点击刷新I而不是NoMethodError指示tag_list未定义.
我是rails的新手,所以也许我的假设是错误的,但我预计对Page.send的调用会对Page类进行永久性更改,而不是对类的特定实例进行更改.那么如何在每个请求中将acts_as_taggable添加到Page类?