问题标签 [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.
ruby-on-rails - 如何将应用程序装饰器用于站点范围的视图逻辑?
在观看了最近关于 Draper 的 Railscasts 集后,我想我应该尝试重构我的一些东西以利用装饰器模式。然后立即设法使自己感到困惑。
我的应用程序布局文件中有视图逻辑,它根据您是否(等待)您是否登录提供登录或注销链接:
似乎是将这种逻辑转移到装饰器中的完美候选者。但这是一个应用程序范围的视图逻辑,那么我在装饰什么?我想我想创建一个应用程序装饰器,但我不清楚如何实例化应用程序装饰器对象以及如何引用它。
Railscasts 集确实展示了如何创建应用程序装饰器,但它是从特定控制器(即不是应用程序控制器)中引用的。如何构建事物以便我可以从网站上的每个页面访问装饰视图逻辑?
ruby-on-rails - 使用 rspec 测试 Draper 增强模型
在我使用 draper 抽象出一些逻辑之前,我对我的视图进行了 rspec 测试。视图在浏览器中正确呈现,但现在测试失败。
该视图包含对装饰器方法的调用,该方法calendars
在 decorators/article_decorator.rb 中定义,但 rspec 没有选择它,可能是因为我使用的是 stub_model:
我怎样才能让我的测试再次工作?(或者有更好的方法来测试我的观点吗?)
ruby-on-rails - rspec 使用 draper Decorator 测试视图
我尝试用 Rspec 测试我的观点。在我看来,我有一个由 Draper 生成的装饰器。这个装饰器是由正直的_exposure gem 暴露的。
我像这样创建我的 rspec 测试:
在我的助手的存根中,我生成了 Draper 装饰器。在这个装饰器中,我有方法可以调用一些 helper link_to
。
但是如果我启动这个测试我有一个错误:
我不希望我的装饰器对所有助手调用存根。那我该怎么办?
ruby-on-rails - 控制器规格 + 布草
我正在使用 rspec 和 draper gem https://github.com/jcasimir/draper
在我的控制器中,这是一个简单的动作表演
并测试
在项目中一切正常,产品显示正常,但在测试中我得到这样的错误
如果我只用 @category.products 替换 ProductDecorator.decorate(@category.products) - 没有错误
如果我检查@products
得到
有什么建议么?
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 内部调用,因为它不是视图助手。
对此有什么想法吗?
ruby-on-rails - Draper - NoMethodError 与 RSpec 测试装饰器
尝试使用Draper进行测试时收到以下错误:
这是我的测试代码:
这是我的装饰器代码:
我的研究表明,这条线ApplicationController.new.set_current_view_context
应该可以解决这个问题,但事实并非如此。有什么想法吗?
ruby-on-rails-3 - Rails + jQuery-tokeninput + Draper 装饰器方法
我正在使用 Rails + jQuery-tokeninput 执行预输入搜索并填充“belongs_to”关系。这是模型:
我们在这个项目中使用Draper为我们的模型提供装饰器。
我们的 CompositionDecorator 有以下方法:
我已经设置了 tokeninput 支持来使用装饰器,如下所示:
控制器索引方法调用装饰器,如下所示:
当我不使用装饰器时,这一切似乎都可以正常工作,但是添加装饰器会导致问题。“full_title”属性未包含在控制器生成的 json 中,因此“未定义”显示在所选值中,搜索结果列表中不显示任何内容。javascript 控制台中还显示以下错误:
TypeError:“未定义”不是对象(评估“value.replace”)
任何帮助将不胜感激!
ruby-on-rails - 如何在 Rails 3 中使用 Draper 装饰嵌套属性(关联)?
我的环境:
- 导轨 3.2
- 带布艺宝石
我正在使用嵌套资源并且无法确定在哪里声明装饰器。
我尝试替换items
为ItemDecorator
,但没有用。我应该把它放在哪里?
我知道 Draper 在表单中存在嵌套资源问题,但这不是表单!
ruby-on-rails - 如何使用 Draper 0.14.0 访问装饰器规范文件中的辅助方法
目前在我的 spec/decorators/product_decorator_spec.rb 中,我有以下内容:
当我运行我的规范时,我得到以下信息:
根据文档,放置在装饰器文件夹中的规范应该可以访问辅助方法,但是我的规范没有。我也尝试过手动标记我的规格,但似乎没有任何效果。
感谢您的关注。
ruby-on-rails-3 - Draper:如何将装饰模型的所有允许属性和公共方法转换为 json
我正在寻找一种将装饰模型转换为 json 以在我的客户端模板中使用的简单方法。我想找到一个解决方案,其中装饰模型的所有允许属性和公共方法都将保留在 json 中。
目前我有带有rails后端的骨干RIA。我正在使用 haml_coffee_assets gem 进行客户端模板。Draper 在那里为我的用户模型提供装饰
我的控制器代码如下所示:
而在我看来,我只是在初始化主干应用程序:
有没有办法删除丑陋的#for_json 装饰器方法?