【问题标题】:How to include Draper Decorators in Rails Console?如何在 Rails 控制台中包含 Draper 装饰器?
【发布时间】:2012-11-26 01:34:58
【问题描述】:

我想在 Rails 控制台(https://github.com/drapergem/draper 和 http://railscasts.com/episodes/286-draper)中查看我的一些 Draper 装饰器的输出。为此,我一直在寻找一种包含装饰器及其方法的方法,类似于应用程序助手:

 include ActionView::ApplicationHelper

Draper 装饰器继承自 ApplicationDecorator,ApplicationDecorator 继承自 Draper::Base

 class ApplicationDecorator < Draper::Base
 end

 class MaterialDecorator < ApplicationDecorator
    decorates :material
    #methods to decorate your material..
 end

我尝试了include Draper::Base::MaterialDecoratorinclude ApplicationDecorator::MaterialDecorator 和其他一些类似的变体,但没有成功。

如何在 rails 控制台中包含装饰器,例如上面的 Material Decorator?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 decorator draper


    【解决方案1】:

    所以,事实证明(除非有人可以证明)这不是您在 rails 控制台中测试 draper 装饰器输出的方式。

    相反,您只需这样做:

     material = Material.first
     material = MaterialDecorator.decorate(material)
     material.some_decorator_method
    

    【讨论】:

      【解决方案2】:

      app/decorators 添加到 Rails 自动加载路径:

      config/application.rb:

      config.autoload_paths << Rails.root.join('app/decorators')
      

      然后,应该自动加载该路径下的装饰器类,即使在rails console 中也是如此。示例:

      Material.first.decorate.some_decorator_method # => "good stuff"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-17
        • 1970-01-01
        • 1970-01-01
        • 2014-12-19
        • 1970-01-01
        • 2018-09-15
        • 1970-01-01
        相关资源
        最近更新 更多