问题标签 [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.

0 投票
1 回答
567 浏览

ruby-on-rails - 如何在更新期间使用接受嵌套属性的 reject_if 选项删除子项

我在 Rails 5.0 上。我不太确定这是否可行,或者我是否需要采取不同的方法。我有过程和并发症的模型,其中过程 has_many Complications 定义如下;

向用户呈现具有多种并发症的程序的嵌套表格。我已经使用茧宝石动态地做到这一点。在新记录上,用户会看到一个空的并发症选择框。如果他们将其留空,则验证失败。这是为了强制他们选择“无”,以防止他们跳过该字段。如果他们确实选择了“无”,则不会因为该reject_if选项而添加任何并发症。所有这些都完全按预期工作。

如果选择了并发症(例如“失败”)并且随后编辑了程序记录,则会出现问题。如果并发症更改为“无”,然后更新记录,当我想要的行为是销毁并发症时,并发症将保持不变(即仍然“失败”)。

如果更新记录已存在,则可能拒绝_if 选项无法删除更新记录。这个对吗?如果是这样,处理我的案件的适当方式是什么?

TIA。

0 投票
1 回答
214 浏览

ruby-on-rails - 嵌套属性有很多通过

我有 3 个模型:

我想在编辑 Days 时在我的表中添加销售人员,并通过 day_salesman 表关联日期和销售人员。我正在尝试这样做,但我没有做对,我正在发送我的控制器和我的观点:

售货员控制器:

天编辑视图:

当我填写编辑表单时,它会出现以下错误:

错误日志:

我不知道我是否做对了,可能不是,记住我想在编辑一天而不是在创建一天时添加推销员,我不知道这是否可能。有人可以帮忙吗?

0 投票
0 回答
54 浏览

ruby-on-rails - 嵌套属性,同时更新和创建不同的表和字段

在我的应用程序中,我有一个目标,这个目标属于一家公司,并且有开始和结束日期,当它被自动创建时,在目标中定义的开始日期和结束日期之间的日期表中创建值,这个字段的名称为 date_day。

除了这个字段每个Day还有一个value字段,即当天收集的总金额,这个值在用户创建目标时不会自动定义,即为null,需要编辑Day来定义如何那天收集了很多。当我去做当天的版本时,我想在我的模型推销员中添加一名员工,该员工将与那天绑定。

我通过 Day 编辑表单添加了一名员工,但仅此而已,day 值的版本没有更新,而且 DaySalesman 表也没有增量。

我的模型:

以下是我的控制器和我的控制器的结果:

推销员:

我的控制器日视图编辑是:

当我单击此视图上的提交按钮时,我的日志是:

我想知道如何通过这一天的编辑表单更新这一天的值,创建一个新员工并通过 Daysalesmen 表将其关联到这一天。

0 投票
1 回答
585 浏览

ruby-on-rails - 对没有自动递增 ID 的模型使用嵌套属性

我有以下模型及其相应的架构定义:

正如您从上面的评论中看到的,id不是为Face模型自动生成的,而是期望在创建它们时输入(因为我们正在建模现实世界中已经具有唯一标识符的东西,我们想要使用而不是添加另一个 ID)。

当我尝试执行以下操作时,问题就来了

这对我来说意味着,由于我们正在传递一个id,Rails 期望这是对关联的更新Face,而不是传递一个Face要创建并与cube.

有没有办法让我禁用此默认行为accepts_nested_attributes_for,或者我是否必须为我的特定用例编写自定义代码?

0 投票
0 回答
156 浏览

ruby-on-rails - 通过未选中的复选框销毁 Accepts_nested_attributes_for 关联

我正在以表示用户订阅的通知方法的形式创建复选框,并允许用户订阅其他通知方法或取消订阅现有的通知方法。以下是关系的样子:

和...

我正在使用的表单使用form_tag.

如果用户取消选中任何复选框,我希望删除匹配的订阅。我不确定这里的最佳方法是使用_destroy属性还是阻止将该复选框的所有属性发送到服务器。

如果是前者,我想我可以为 创建一个隐藏字段_destroy,但我不知道如何根据是否选中复选框有条件地将该隐藏字段设置为 true。

如果是后者,我不知道如何在未选中复选框时不发送隐藏字段。我需要hidden_field为订阅添加一个,id这样 Rails 就不会在已经存在订阅的情况下创建新订阅,还需要hidden_field为订阅添加一个,category这样才能创建正确的订阅类型。

这是我创建的复选框的样子。现在,我只是为order_update通知类型创建复选框:

如果我当前订阅了电子邮件和文本通知,然后我取消选中文本框,这就是我在参数中得到的:

0 投票
2 回答
306 浏览

ruby-on-rails - 接受带有 class_name 的嵌套属性

更改类名后无法接受嵌套属性。我确定我只是错过了一些明显的东西,但似乎找不到它。

模型/walk.rb

模型/walk_attendee.rb

测试/模型/walk_test.rb

0 投票
3 回答
1638 浏览

ruby-on-rails - Rails 嵌套属性和更改关联

这个让我难过了一整天!

我有以下型号:

泵类

泵模式

控制类

控制模式

我正在尝试更新ControlPump之间的关联。以下作品:

但以下没有,我不知道为什么。

上下文是我有一个 Pump 表单,在编辑我的 Pump 时,选择下拉列表中有一个控件列表。我只想选择与泵关联的控件。

Update1:​​从下面回答一个问题

0 投票
1 回答
382 浏览

ruby-on-rails - Rails 嵌套属性 JSON 格式

我正在尝试覆盖“as_json”方法以包含对象的嵌套属性,但我无法正确嵌套 JSON。

目前,我在 Rails 中有这个用于我的“as_json”方法。

但是,setting_options_attributes应该嵌套在下面settings_attributes,我找不到正确的语法来实现这一点。

0 投票
1 回答
1053 浏览

ruby-on-rails - 如何防止出现多个 simple_fields_for 表单?

我有一个在迭代器中呈现的 simple_fields_for 表单,如下所示:

在我的控制器中,我有这个:

我的PortStock.rb模型:

我的ClosedPosition.rb模型:

以上对于@port_stock没有closed_positions.

例如,该表单呈现如下:

simple_form_for 的良好渲染

请注意,Number of UnitsandSale Price字段在每一行中只显示一次(这是我所期望的)。

但是,一旦我closed_position在 any 上创建了一个,PortStock它就会产生两个问题:

首要问题

它将现有的已平仓头寸预填充为一个字段,然后为 渲染另一个空白字段closed_positions,即像这样:

首要问题

我想要发生的是它只呈现新表单而不是重新呈现每行上现有的 closed_position 值。用户不能在此表单中编辑现有的已平仓头寸。

第二期

每当有多个已平仓头寸时,它都会在每一行中呈现错误的头寸。

为每个关闭位置呈现的错误值

请注意呈现的每个值是如何表示num_units: 100&&price: 8.0的,请查看这些相同 closed_positions 的控制台输出:

正确的值实际上是:

  1. 数量单位:100 && 价格:8.0
  2. 数量单位:10 && 价格:7.95
  3. 数量单位:50 && 价格:7.9

我不明白为什么它为所有port_stock对象输出相同的值。

如何在我的simple_fields_for表单中解决这两个问题?

0 投票
1 回答
273 浏览

ruby-on-rails - 为什么我会收到这个未经许可的参数错误?

我有一个PortStock看起来像这样的模型:

我的ClosedPosition模型如下所示:

在我的PortStockController,我的参数看起来像这样:

这是表格:

这是我的PortStock#Create行动:

这是我尝试执行以下操作时的错误create

这可能是什么原因造成的?