问题标签 [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 投票
0 回答
407 浏览

ruby-on-rails - 如何将应用程序装饰器用于站点范围的视图逻辑?

在观看了最近关于 Draper 的 Railscasts 集后,我想我应该尝试重构我的一些东西以利用装饰器模式。然后立即设法使自己感到困惑。

我的应用程序布局文件中有视图逻辑,它根据您是否(等待)您是否登录提供登录或注销链接:

似乎是将这种逻辑转移到装饰器中的完美候选者。但这是一个应用程序范围的视图逻辑,那么我在装饰什么?我想我想创建一个应用程序装饰器,但我不清楚如何实例化应用程序装饰器对象以及如何引用它。

Railscasts 集确实展示了如何创建应用程序装饰器,但它是从特定控制器(即不是应用程序控制器)中引用的。如何构建事物以便我可以从网站上的每个页面访问装饰视图逻辑?

0 投票
1 回答
962 浏览

ruby-on-rails - 使用 rspec 测试 Draper 增强模型

在我使用 draper 抽象出一些逻辑之前,我对我的视图进行了 rspec 测试。视图在浏览器中正确呈现,但现在测试失败。

该视图包含对装饰器方法的调用,该方法calendars在 decorators/article_decorator.rb 中定义,但 rspec 没有选择它,可能是因为我使用的是 stub_model:

我怎样才能让我的测试再次工作?(或者有更好的方法来测试我的观点吗?)

0 投票
2 回答
3551 浏览

ruby-on-rails - rspec 使用 draper Decorator 测试视图

我尝试用 Rspec 测试我的观点。在我看来,我有一个由 Draper 生成的装饰器。这个装饰器是由正直的_exposure gem 暴露的。

我像这样创建我的 rspec 测试:

在我的助手的存根中,我生成了 Draper 装饰器。在这个装饰器中,我有方法可以调用一些 helper link_to

但是如果我启动这个测试我有一个错误:

我不希望我的装饰器对所有助手调用存根。那我该怎么办?

0 投票
1 回答
541 浏览

ruby-on-rails - 控制器规格 + 布草

我正在使用 rspec 和 draper gem https://github.com/jcasimir/draper

在我的控制器中,这是一个简单的动作表演

并测试

在项目中一切正常,产品显示正常,但在测试中我得到这样的错误

如果我只用 @category.products 替换 ProductDecorator.decorate(@category.products) - 没有错误

如果我检查@products

得到

有什么建议么?

0 投票
2 回答
1483 浏览

ruby-on-rails - 使用 RABL 和 Draper 来渲染 to_json

我的Ticket模型应用程序中有一些相当复杂的 JSON 响应,我希望我TicketDecorator能成为构建这些响应的人。

但是,我已经为我的系统设置了 API,并使用 RABL 来构建这些 JSON 响应,所以我想重用我已经创建的模板。

我想知道是否可以从 inside 的方法中呈现 RABL 模板TicketDecorator,如下所示:

这是我的 RABL 模板tickets/show.json.rabl

这是我的TicketDecorator方法:

但是,这不起作用,因为我无法成功设置@ticket,并且我收到一条错误消息: undefined method `first_attachment_url' for nil:NilClass因为@ticket是 nil。

关于如何使这两者很好地协同工作,有人有什么好的解决方案吗?

我唯一真正的想法是将模板渲染为字符串并手动使用 RABL,但我不确定如何render_to_string在 Draper 内部调用,因为它不是视图助手。

对此有什么想法吗?

0 投票
1 回答
1658 浏览

ruby-on-rails - Draper - NoMethodError 与 RSpec 测试装饰器

尝试使用Draper进行测试时收到以下错误:

这是我的测试代码:

这是我的装饰器代码:

我的研究表明,这条线ApplicationController.new.set_current_view_context应该可以解决这个问题,但事实并非如此。有什么想法吗?

0 投票
1 回答
444 浏览

ruby-on-rails-3 - Rails + jQuery-tokeninput + Draper 装饰器方法

我正在使用 Rails + jQuery-tokeninput 执行预输入搜索并填充“belongs_to”关系。这是模型:

我们在这个项目中使用Draper为我们的模型提供装饰器。

我们的 CompositionDecorator 有以下方法:

我已经设置了 tokeninput 支持来使用装饰器,如下所示:

控制器索引方法调用装饰器,如下所示:

当我不使用装饰器时,这一切似乎都可以正常工作,但是添加装饰器会导致问题。“full_title”属性未包含在控制器生成的 json 中,因此“未定义”显示在所选值中,搜索结果列表中不显示任何内容。javascript 控制台中还显示以下错误:

TypeError:“未定义”不是对象(评估“value.replace”)

任何帮助将不胜感激!

0 投票
1 回答
4619 浏览

ruby-on-rails - 如何在 Rails 3 中使用 Draper 装饰嵌套属性(关联)?

我的环境:

我正在使用嵌套资源并且无法确定在哪里声明装饰器。

我尝试替换itemsItemDecorator,但没有用。我应该把它放在哪里?

我知道 Draper 在表单中存在嵌套资源问题,但这不是表单!

0 投票
2 回答
4100 浏览

ruby-on-rails - 如何使用 Draper 0.14.0 访问装饰器规范文件中的辅助方法

目前在我的 spec/decorators/product_decorator_spec.rb 中,我有以下内容:

当我运行我的规范时,我得到以下信息:

根据文档,放置在装饰器文件夹中的规范应该可以访问辅助方法,但是我的规范没有。我也尝试过手动标记我的规格,但似乎没有任何效果。

感谢您的关注。

0 投票
0 回答
813 浏览

ruby-on-rails-3 - Draper:如何将装饰模型的所有允许属性和公共方法转换为 json

我正在寻找一种将装饰模型转换为 json 以在我的客户端模板中使用的简单方法。我想找到一个解决方案,其中装饰模型的所有允许属性和公共方法都将保留在 json 中。

目前我有带有rails后端的骨干RIA。我正在使用 haml_coffee_assets gem 进行客户端模板。Draper 在那里为我的用户模型提供装饰

我的控制器代码如下所示:

而在我看来,我只是在初始化主干应用程序:

有没有办法删除丑陋的#for_json 装饰器方法?