【问题标题】:private method `prepend' called for Refinery::Admin::PagesController:Class (NoMethodError)为 Refinery::Admin::PagesController:Class (NoMethodError) 调用私有方法 `prepend'
【发布时间】:2015-10-22 16:27:34
【问题描述】:

我遇到了 heroku 无法运行我的应用程序的问题。

我正在使用refinerycms 并尝试将导航菜单放在this tutorial 的页脚中。

我成功地将所有内容推送到heroku。

heroku run rake db:migrate 工作正常。

当我尝试在 heroku 上打开应用程序时,我在日志中收到此错误:

/app/app/decorators/controllers/refinery/pages_controller.rb:1:in `<top (required)>': private method `prepend' called for Refinery::Admin::PagesController:Class (NoMethodError)

这是导致错误的文件: pages_controller_decorator.rb

Refinery::Admin::PagesController.prepend(
  Module.new do
    def permitted_page_params
      super << :show_in_footer
    end
  end
)

显然 heroku 的 prepend 方法存在问题,但我不确定如何在没有它的情况下使页脚操作正常工作。

【问题讨论】:

    标签: ruby-on-rails ruby heroku refinerycms


    【解决方案1】:

    在 ruby​​ 中可以使用 send 调用私有方法。我不确定,如果这打算在这里特别使用,但只需更改

    Refinery::Admin::PagesController.prepend(MODULE_CODE)
    

    Refinery::Admin::PagesController.send :prepend, MODULE_CODE
    

    【讨论】:

    • 完美运行。谢谢!
    • 我要提醒一下:一般来说,无论是预期的控制流,Refinery 的作者都应该提供公共方法来实现它。所以,听起来你是在用铁钉钉螺丝 :) 也许,你最好尝试仔细查找文档以找到实现你想要的建议的方法。 (我不是炼油厂的大师,所以很遗憾我无法给出建议。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多