问题标签 [accepts-nested-attributes]
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 - 如何在更新期间使用接受嵌套属性的 reject_if 选项删除子项
我在 Rails 5.0 上。我不太确定这是否可行,或者我是否需要采取不同的方法。我有过程和并发症的模型,其中过程 has_many Complications 定义如下;
向用户呈现具有多种并发症的程序的嵌套表格。我已经使用茧宝石动态地做到这一点。在新记录上,用户会看到一个空的并发症选择框。如果他们将其留空,则验证失败。这是为了强制他们选择“无”,以防止他们跳过该字段。如果他们确实选择了“无”,则不会因为该reject_if
选项而添加任何并发症。所有这些都完全按预期工作。
如果选择了并发症(例如“失败”)并且随后编辑了程序记录,则会出现问题。如果并发症更改为“无”,然后更新记录,当我想要的行为是销毁并发症时,并发症将保持不变(即仍然“失败”)。
如果更新记录已存在,则可能拒绝_if 选项无法删除更新记录。这个对吗?如果是这样,处理我的案件的适当方式是什么?
TIA。
ruby-on-rails - 嵌套属性有很多通过
我有 3 个模型:
我想在编辑 Days 时在我的表中添加销售人员,并通过 day_salesman 表关联日期和销售人员。我正在尝试这样做,但我没有做对,我正在发送我的控制器和我的观点:
售货员控制器:
天编辑视图:
当我填写编辑表单时,它会出现以下错误:
错误日志:
我不知道我是否做对了,可能不是,记住我想在编辑一天而不是在创建一天时添加推销员,我不知道这是否可能。有人可以帮忙吗?
ruby-on-rails - 嵌套属性,同时更新和创建不同的表和字段
在我的应用程序中,我有一个目标,这个目标属于一家公司,并且有开始和结束日期,当它被自动创建时,在目标中定义的开始日期和结束日期之间的日期表中创建值,这个字段的名称为 date_day。
除了这个字段每个Day还有一个value字段,即当天收集的总金额,这个值在用户创建目标时不会自动定义,即为null,需要编辑Day来定义如何那天收集了很多。当我去做当天的版本时,我想在我的模型推销员中添加一名员工,该员工将与那天绑定。
我通过 Day 编辑表单添加了一名员工,但仅此而已,day 值的版本没有更新,而且 DaySalesman 表也没有增量。
我的模型:
以下是我的控制器和我的控制器的结果:
推销员:
我的控制器日视图编辑是:
当我单击此视图上的提交按钮时,我的日志是:
我想知道如何通过这一天的编辑表单更新这一天的值,创建一个新员工并通过 Daysalesmen 表将其关联到这一天。
ruby-on-rails - 对没有自动递增 ID 的模型使用嵌套属性
我有以下模型及其相应的架构定义:
正如您从上面的评论中看到的,id
不是为Face
模型自动生成的,而是期望在创建它们时输入(因为我们正在建模现实世界中已经具有唯一标识符的东西,我们想要使用而不是添加另一个 ID)。
当我尝试执行以下操作时,问题就来了:
这对我来说意味着,由于我们正在传递一个id
,Rails 期望这是对关联的更新Face
,而不是传递一个Face
要创建并与cube
.
有没有办法让我禁用此默认行为accepts_nested_attributes_for
,或者我是否必须为我的特定用例编写自定义代码?
ruby-on-rails - 通过未选中的复选框销毁 Accepts_nested_attributes_for 关联
我正在以表示用户订阅的通知方法的形式创建复选框,并允许用户订阅其他通知方法或取消订阅现有的通知方法。以下是关系的样子:
和...
我正在使用的表单使用form_tag
.
如果用户取消选中任何复选框,我希望删除匹配的订阅。我不确定这里的最佳方法是使用_destroy
属性还是阻止将该复选框的所有属性发送到服务器。
如果是前者,我想我可以为 创建一个隐藏字段_destroy
,但我不知道如何根据是否选中复选框有条件地将该隐藏字段设置为 true。
如果是后者,我不知道如何在未选中复选框时不发送隐藏字段。我需要hidden_field
为订阅添加一个,id
这样 Rails 就不会在已经存在订阅的情况下创建新订阅,还需要hidden_field
为订阅添加一个,category
这样才能创建正确的订阅类型。
这是我创建的复选框的样子。现在,我只是为order_update
通知类型创建复选框:
如果我当前订阅了电子邮件和文本通知,然后我取消选中文本框,这就是我在参数中得到的:
ruby-on-rails - 接受带有 class_name 的嵌套属性
更改类名后无法接受嵌套属性。我确定我只是错过了一些明显的东西,但似乎找不到它。
模型/walk.rb
模型/walk_attendee.rb
测试/模型/walk_test.rb
ruby-on-rails - Rails 嵌套属性和更改关联
这个让我难过了一整天!
我有以下型号:
泵类
泵模式
控制类
控制模式
我正在尝试更新Control和Pump之间的关联。以下作品:
但以下没有,我不知道为什么。
上下文是我有一个 Pump 表单,在编辑我的 Pump 时,选择下拉列表中有一个控件列表。我只想选择与泵关联的控件。
Update1:从下面回答一个问题
ruby-on-rails - Rails 嵌套属性 JSON 格式
我正在尝试覆盖“as_json”方法以包含对象的嵌套属性,但我无法正确嵌套 JSON。
目前,我在 Rails 中有这个用于我的“as_json”方法。
但是,setting_options_attributes
应该嵌套在下面settings_attributes
,我找不到正确的语法来实现这一点。
ruby-on-rails - 如何防止出现多个 simple_fields_for 表单?
我有一个在迭代器中呈现的 simple_fields_for 表单,如下所示:
在我的控制器中,我有这个:
我的PortStock.rb
模型:
我的ClosedPosition.rb
模型:
以上对于@port_stock
没有closed_positions
.
例如,该表单呈现如下:
请注意,Number of Units
andSale Price
字段在每一行中只显示一次(这是我所期望的)。
但是,一旦我closed_position
在 any 上创建了一个,PortStock
它就会产生两个问题:
首要问题
它将现有的已平仓头寸预填充为一个字段,然后为 渲染另一个空白字段closed_positions
,即像这样:
我想要发生的是它只呈现新表单而不是重新呈现每行上现有的 closed_position 值。用户不能在此表单中编辑现有的已平仓头寸。
第二期
每当有多个已平仓头寸时,它都会在每一行中呈现错误的头寸。
请注意呈现的每个值是如何表示num_units: 100
&&price: 8.0
的,请查看这些相同 closed_positions 的控制台输出:
正确的值实际上是:
- 数量单位:100 && 价格:8.0
- 数量单位:10 && 价格:7.95
- 数量单位:50 && 价格:7.9
我不明白为什么它为所有port_stock
对象输出相同的值。
如何在我的simple_fields_for
表单中解决这两个问题?
ruby-on-rails - 为什么我会收到这个未经许可的参数错误?
我有一个PortStock
看起来像这样的模型:
我的ClosedPosition
模型如下所示:
在我的PortStockController
,我的参数看起来像这样:
这是表格:
这是我的PortStock#Create
行动:
这是我尝试执行以下操作时的错误create
:
这可能是什么原因造成的?