问题标签 [draper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
393 浏览

ruby-on-rails - Rails 4 App 上的 Draper 和 RSpec 以及 Factory Girl 控制器规范

我第一次使用 Draper,效果很好……除了它打破了我的大部分规格。一个例子:

我正在设置一个 account_settings_controller_spec.rb

这以前工作得很好(我已经config.include FactoryGirl::Syntax::Methods开始像这样打电话给工厂了)

但是现在当我打电话时,create :user我得到undefined method 'full_name' for class 'User'了我从我的用户模型移动到我的 UserDecorator 的方法。

这很奇怪,因为工厂,也不是规范,使用该full_name方法。

我尝试了多种方法:

  • ApplicationController.new.set_current_view_context在前块中(这会导致错误)
  • require 'draper/test/rspec_integration'到我的 spec_helper.rb (什么都不做)
  • 添加before/after(:create) { |instance| instance.decorate }到我的工厂(也什么都不做)

我不确定我在这里缺少什么,甚至不确定为什么会抛出错误。当 RSpec 启动时,也许我的装饰器没有被包括在内?

0 投票
1 回答
1158 浏览

ruby-on-rails - 如何为使用同一张表的一组模型创建装饰器?

我有一个 Rails 项目,其中有大量模型都通过单表继承使用同一个表。它们都是不同类型的组织。

是否可以使用draper gem来简化我的模型,而无需为从我的组织模型继承的每个模型创建装饰器?

0 投票
1 回答
1203 浏览

ruby-on-rails - 提供由 Draper 装饰的类

在 draper gem 的 1.0 之前的版本中,我们能够使用decorates显式指定要修饰的类的方法(例如,当类被命名空间时):

现在(draper 1.3)decorates不接受附加参数。但只是省略 :class 选项会导致"uninitialized constant MyClass".

draper不能自动扣除类名的类怎么装饰?

0 投票
1 回答
185 浏览

ruby-on-rails-4 - 使用 draper 生成器时出错

我在生成 draper 时遇到了问题。

当我使用rails g draper:decorator user

我懂了 :Could not find generator draper:decorator.

  • 我在 gem 文件中得到了 draper 并进行了捆绑安装。

有什么建议么 ?

谢谢,

0 投票
1 回答
1016 浏览

ruby-on-rails - 在视图开始时装饰对象(使用 Draper)有什么不好的吗?

Draper 建议在控制器方法的末尾装饰对象,或者使用它们的decorates_associated方法自动装饰它们

我喜欢视图明确声明它期望接收什么的想法(当然,Rails 的其余部分不能像这样工作,但它仍然感觉很好)。因此,我更喜欢在视图顶部而不是在控制器末尾装饰对象:

所以在 users#show 我想做

而不是像这样在用户控制器中进行装饰

我怀疑以这种方式做事存在一些缓存问题,但感觉很好。如果我遗漏了什么怎么办?我建议的做法是不好的做法吗?

0 投票
3 回答
1246 浏览

ruby-on-rails - 如何使用 Draper 使用模块化装饰器装饰 STI 模型?

我将 Draper 用于一般视图层装饰器。

我有一些与控制台相关的、人类可读的功能,我想将其引入新的装饰器中。

我的第一个想法是将它们放在一个模块中,例如,Human::XxxDecorator使它们与我的普通视图层装饰器隔离:它们只是用于rails c调试/黑客/测试工作。

这在顶层运行良好;我可以使用命名空间装饰器显式装饰模型。

现在我需要装饰一系列 STI 车辆。我不确定在同一个装饰器模块中创建特定于车辆类型的装饰器的最佳方法是什么,例如,我有:

  • Human::CarDecorator
  • Human::TruckDecorator
  • Human::MotorcycleDecorator

我不知道如何从,例如,

Human到其嵌入的车辆集合,每个车辆都有来自模块的适当装饰器。使用天真的方法decorates不起作用;我得到:

组合:

  • 来自特定模块的装饰器,以及
  • 适合 STI 模型的装饰器

正在扔东西。

在深入研究 Draper 装饰器推理代码之前(我只是假设这是最好的起点),这是一个已经解决的问题并且我遗漏了一些东西吗?

0 投票
0 回答
309 浏览

ruby-on-rails - 使用带有 angularjs 和 json 的 rails draper gem

所以,我看到人们围绕这个话题跳舞,但我找不到答案。我刚刚安装了带有导轨的'draper' gem。这很棒,但我希望能够将它与 angularjs 一起使用。有没有办法做到这一点?还是我只需要在 angularjs 中制作一个服装装饰器……这意味着我的 'draper' gem 没用:

我的html是:

我的导轨控制器是:

0 投票
1 回答
74 浏览

ruby-on-rails-4 - Draper 导致 text_field 输出不正确的结果

我正在使用 draper 来清理一些视图逻辑。我有一些这样的代码:

装饰师:

形式:

输出:

<input disabled="disabled" id="event_type_1_name" name="#<EventType:0x007f9db6df9cf0>[name]" type="text">

预期输出:

<input value="Miscellaneous" disabled="disabled" id="event_type_1_name" name="event_type[name]" type="text">

我不完全确定这里发生了什么。任何人都可以提供一些帮助吗?在我使用 draper 并在模板中有逻辑之前,一切都运行良好。我也不知道很多红宝石,所以我可能会遗漏一些明显的东西,对不起!

0 投票
1 回答
3488 浏览

ruby-on-rails - 装饰实例上的未定义方法

这是一个装饰器

应用程序/装饰器/campaign_decorator.rb

当我调用CampaignDecorator.custom_method它时找不到方法。还CampaignDecorator.first.created_at返回未格式化的日期。

谁能告诉我我错过了什么?

0 投票
1 回答
758 浏览

ruby-on-rails - 如何从 Rails 中的 Draper 装饰器访问会话变量?

我希望能够从装饰器访问会话变量。现在我不能这样做,也不能访问控制器实例变量,比如说@session_variable.

有没有一种干净的方法来实现这一目标?

谢谢!