问题标签 [trailblazer]
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 - Cells-4.0.4 : 未初始化的常量 Cell::Concept (NameError)
环境:
我正在研究 Trailblazer 书中的示例,将它们映射到当前项目。当我从 ActionView 切换到 Cells 时,我的工作或多或少都符合预期。我将模板移入app/concepts/ar_invoice/views
并创建了app/concepts/ar_invoice/cell.rb
. 在我启动此更改后,rails server
我收到此错误:
涉及的代码是这样的:
宝石文件:
应用程序.rb:
需要'开拓者/rails/railtie'
控制器(ar_invoices_controller.rb):
操作.rb:
单元格.rb:
和视图(new.haml):
我不使用任何 Trailblazer/Cells 初始化程序。有人可以指出导致上述异常的我的错误吗?
trailblazer - Paperdragon 的 Trailblazer Operation 如何按顺序处理图像?
在使用 Paperdragon 处理图像的 Trailblazer 操作中,典型的代码如下:
这将从上传的图像创建四个版本,该图像可根据upload
操作的合同进行访问。
我想做一些事情来:original
生成,:edited
然后用作,和:edited
的基线。我如何使用 Paperdragon 实现这一目标?:verson_a
:version_b
:version_c
ruby-on-rails - 如何测试/模拟与外部 gem 交互的 Trailblazer 操作?
我喜欢 Trailblazer 的所有面向对象的美!
我有一个与 gem(称为cpanel_deployer
)交互的操作,以在网络上进行外部操作。(它将插件域添加到 cpanel。)
cpanel_deloyer
gem 已经过测试,所以我不需要在这里重新测试它的功能。但为了测试操作,我想确保CpanelDeployer::Panel#add_domain
使用正确的参数调用。所以我想我应该嘲笑CpanelDeployer::Panel
。
我认为尝试使用any_instance_of
. 根据thoughtbot 的说法,它通常被认为是代码异味......他们建议使用依赖注入。有没有一种在开拓者操作中使用依赖注入的好方法?这种情况还有另一种最佳做法吗?
trailblazer - 继承的 Trailblazer 操作的合约能否更改其超类定义的验证?
当通过继承定义Trailblazer操作时,它会继承其超类的协定:
继承的 Trailblazer 操作的合约可以更改其超类定义的验证吗?
之所以出现这个问题,是因为创建操作的合同定义了一个强制属性,该属性需要在更新操作中是可选的:
最初的想法是在继承的类中以某种方式颠倒这个定义,但似乎没有办法做到这一点(可以忽略子类中的属性(writeable:false
-书p61)但似乎没有办法更改其有效性标准)。
ruby-on-rails - 在服务器运行时更改 Rails 代码时,Trailblazer 操作中的类的超类不匹配错误
我将Trailblazer
gem 与 Rails 一起使用,并且我的一个操作中有一个Cell
类,每当我在服务器运行时更改代码时就会Trailblazer
开始抛出错误。superclass mismatch
如果我启动服务器并立即开始浏览网站,一切都运行良好。
但是,如果在启动服务器后随时更改某些代码,然后尝试在站点上加载页面,则会出现superclass mismatch
错误。
trailblazer - Trailblazer 概念能否从另一个概念继承并能够扩展其操作(多重继承)?
考虑一个抽象概念Tag
,其中有不同种类的标签,比如Topic
和Location
(以及其他),它们除了作为标签之外是不相关的。它们具有相同的基本Tag
属性,但在其他方面有所不同。
一个Topic
概念是基于一个类似的Tag
概念。likeTopic::Update
通常会继承 from Topic::Create
,但这样的操作也需要继承 from Tag::Update
。Ruby 不支持多重继承——Trailblazer 可以支持吗?
Trailblazer 操作通过一个
builds
块支持继承,该块允许它们根据提供的params
哈希的内容实例化一个子类。这适用于基类 (Tag
) 面向公众并且通过基类调用操作的情况。但是,在此示例中,面向公众的类是Topic
子类。操作需要通过子类 (
Topic
) 调用,但其操作基于公共Tag
基类(反向构建器?)。
这是可以通过单继承实现的一种方法(但它说明了这种方法的缺点)...
每种类型的标签都存储在自己的数据库表中,并具有如下 ActiveRecord 类:
Trailblazer 的概念将遵循类似的设计 -Tag
操作将提供基本功能并由更具体的操作 ( Topic
) 子类化。该Tag
操作不会直接使用 -Topic
例如,控制器将使用该Topic
操作。
该Topic
操作继承自Tag
但必须指定其自己的Topic
模型,这似乎只能在每个操作中实现,要求每个操作都明确地进行子类化:
这样做的一个问题是,在基本操作上定义的合同认为它是 aTag
而不是 a Topic
,这会导致将其用作模型的问题。一个显示问题所在的示例是在单元格的视图中:该Topic
概念有一个单元格,该单元格呈现视图以操纵其对象。它使用 渲染表单simple_form_for
,如下所示:
这不能按预期工作,因为合同认为它是 aTag
并且这打破了形式:
- 它的参数被发送为
params[:tag]
而不是params[:topic]
- 提交按钮的标签是Create Tag而不是Create Topic。
单元格不能使用operation.model
(否则会起作用),因为在提交的操作失败后渲染时它不会看到任何表单错误。
解决此问题的一种方法是明确说明simple_form_for
:
向 中添加属性时会出现另一个问题Topic
,因为这需要扩展Tag
合同。通常的方法是contract do..end
在操作中添加一个块Topic::Create
。出现问题是因为这样的块不会被看到,Topic::Update
并且Topic::Delete
因为它们继承自Tag
对应的而不是继承自Topic::Create
.
另一种方法是子类Topic::Update
操作继承自Topic::Create
. 这将消除指定模型的需要(因为Topic::Create
这样做),但意味着Tag::Update
操作添加的任何内容都将丢失:
action
需要重新指定,因为不是Tag::Update
继承的,但是因为Topic::Create
是继承的,所以添加的属性Topic::Create
在Topic::Update
.
只要更改仅在一个基类中,这两种样式都可以工作。当两者都发生变化时它会中断,因为 Ruby 不支持多重继承。考虑Delete
通常如下所示的操作:
如果是这样,Tag::Delete
那么Topic::Delete
可能是
或者
在前一种情况下Topic::Delete
,将不知道由添加的属性,Topic::Create
而在后一种情况下,Topic::Delete
将缺少在 中定义的process
方法Tag::Delete
。
开拓者概念如何继承另一个概念并能够扩展其业务?
ruby-on-rails - Rails 4:将父类belongs_to属性传递给子类
为了把我的问题放在上下文中,我有一个包含许多字段的表单。每个字段都可以是另一个字段的根或子字段(在我的数据库中使用闭包表的层次结构)。我在构建层次结构表时没有任何问题,但是我form_id
在子字段上设置时遇到了问题。
这是我的架构:
还有我的模型(为了简单起见):
如果我使用嵌套表单保存我的子字段,我会收到此错误:ERROR: null value in column "form_id" violates not-null constraint
. 如果我这样做,form_id
则不会通过:Form.find(1).fields.first.fields.new
例如。
有没有办法自动设置?是自动设置的parent_id
。
编辑
params
堆栈示例。我将 Trailblazer 架构与改革一起使用。
ruby-on-rails - Trailblazer Rails React - 我如何从 .jsx 调用“concept”?
在 .JSX 中,我想调用
,为了在同一个 JSX 中显示视图表单。我该怎么做?我认为不可能在 JSX 中使用 Rail。谢谢!
提前致谢!
ruby-on-rails - 开拓者改革:validation_groups 崩溃
我正在设置 Trailblazer 的部署,但是我是一个新的 Rails 用户,我可以使用一些关于这个问题的指导。
我已经安装了所有必需的 Gem,但是Reform
gem 没有正常运行并且抛出错误。
这是错误:
validation_groups: undefined local variable or method validation_group_class for RecentUpgrade::Contract::Create:Class (NameError)
有什么想法可以让这个应用程序运行吗?谢谢!
这是我们在应用程序中使用的验证代码的一部分contract.rb