问题标签 [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 回答
108 浏览

ruby-on-rails - Rails 6:无法删除嵌套模型。随机插入语句

我将 Rails 6 与 Postgres 一起使用,并且在删除嵌套模型时遇到问题。删除关联后会生成随机插入语句。

让我解释一下我的设置。

迁移

楷模

控制器

请求参数

这些是日志

为什么在删除调用后会生成插入?这甚至不是回滚。

注意:我在 Cards belongs_to 迁移中尝试了 null:true 和 null:false。我还尝试在 Card 模型中的 belongs_to :entry 语句中设置 optional:true

0 投票
0 回答
265 浏览

ruby-on-rails - rails - 在更新嵌套属性时将预先存在的记录分配为嵌套关联

我没有使用 rails 表单,因为这一切都来自我正在解析的 XML。对于我的要求,我需要将现有记录分配为嵌套关联,同时更新该关联的选定属性。

我的模型如下:

现在,要分配现有的用户记录,我的列表参数应该是

要包括用户记录属性更改,我的列表参数应该是:

然后我当然会做作业并保存:

仅使用以前的参数不允许我agency_id在同一个数据库事务中进行更新;而使用后一个参数会创建一个新的用户记录。

我最初的尝试是以某种方式合并两个参数集:

这导致了以下结果:

旁注:我希望能够同时支持更新和创建具有相同参数集的操作。

由于那不起作用,我尝试了另一种混合动力:

但是这个也创建了一个具有正确的新用户agency_id,而忽略了该user_id属性。

有没有办法User.find(1230)在更新同agency_id一个 ActiveRecord DB 请求和参数集中的同一个用户时分配现有的?

0 投票
0 回答
69 浏览

ruby-on-rails - Railscarrierwave-base64 与 accept_nested_attributes_for

我正在尝试使用carrierwave-base64 和accepts_nested_attributes_for 上传文件,但出现“文件不能为空”错误。这是我正在尝试的示例:

但是如果我像下面的代码那样做,它会起作用:

我究竟做错了什么?

0 投票
1 回答
144 浏览

ruby - 使用嵌套属性的 where 条件访问子级

我有以下关系集,仪表板过滤器值有一个名为 filter_type 的列,它的值可以是 1 或 0。

before_save回调中,当我使用self.dashboard_filter_values.inspect时,会打印 ActiveRecord::Associations::CollectionProxy.

self.dashboard_filter_values.where(:filter_type => 0) 打印任何东西,即使有满足条件的记录。

before_save回调中,如何使用 where 条件过滤我想要的值。

在这方面的任何帮助都会非常棒。谢谢。

0 投票
1 回答
293 浏览

ruby-on-rails - Rails 接受_nested_attributes_for 不使用 has_many 关系和茧宝石

我正在使用宝石构建一个创建锦标赛的表单。锦标赛has_many游戏。Cocoon 让我可以动态地将更多游戏添加到表单中。

当我打电话时@tournament.save,它会产生以下错误:

锦标赛.rb

游戏.rb

架构.rb

锦标赛控制器.rb

在锦标赛控制器中请求参数#create

锦标赛控制器中的锦标赛参数#create

在我看来,accepts_nested_attributes 文档在一对多下所期望的tournament_params匹配,所以我不明白为什么会出现错误。

关联集合的嵌套属性也可以以散列散列而不是散列数组的形式传递:

具有相同的效果

编辑:

锦标赛/new.html.erb

锦标赛/_form.html.erb

锦标赛/_game_fields.html.erb

游戏/_form_fields.html.erb

0 投票
1 回答
121 浏览

ruby-on-rails - 批量分配现有记录轨道的集合

我正在尝试将现有记录的集合分配给现有(或新)关联记录。

例如:

从我对列表的创建或编辑表单的视图来看,我正在发送 :name 以及 :items_attributes 以及我想要关联到我的列表的每条记录的 :id。

在我的列表控制器中,我这样做:

但是,我越来越

我将如何以“Rails”方式保存此关联?

编辑

list_params会是这样的(使用 Cocoon gem):

{"name"=>"Standard location shoot", "items_attributes"=><ActionController::Parameters {"1582459909419"=><ActionController::Parameters {"id"=>"1"} permitted: true>} permitted: true>}

未过滤的参数是: {"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"qkXKM9U/1+Y8T4RttvPg==", "list"=>{"name"=>"Standard location shoot", "items_attributes"=>{"1582459152520"=>{"id"=>"1", "_destroy"=>"false"}}}, "commit"=>"Update List", "controller"=>"lists", "action"=>"update", "id"=>"1"}

更一般地说,定义为list_params

0 投票
2 回答
224 浏览

ruby-on-rails - 如果标记为销毁的嵌套属性不存在,则不要引发 ActiveRecord::RecordNotFound

我将Rails 嵌套属性allow_destroy: true. 如果我这样称呼:

并且deck_itemwith id1000不存在 Rails 引发异常ActiveRecord::RecordNotFound

有没有办法告诉 Rails 不要抛出异常而忽略该记录?

0 投票
2 回答
69 浏览

ruby-on-rails - Rails _destroy 字段在表单中出现两次

我有两个模型,Preset 和 Plot,如下所示:

还有一个用于编辑预设的嵌套表单:

根据railscast 196定义用于销毁绘图的复选框的部分 _editplot :

我在预设控制器中允许了 _destroy 参数

编辑预设的所有其他方面都可以正常工作,但 _destroy 的复选框不能。编辑屏幕上销毁两个地块之一的参数在控制台中显示如下:

"_destroy"=>"1" 的存在表明这是按预期工作的。但是,当使用 Chrome 开发工具检查页面时,它显示<input name="preset[plots_attributes][0][_destroy]" type="hidden" value="0">复选框旁边还有一个隐藏字段,其 _destroy 值在提交表单时也被传递。我有一种感觉,这个元素正在干扰表单,但我不确定它来自哪里或如何摆脱它。

我没有在这里包含它,但我有一些相同形式的 JS 代码,它们添加和删除“新绘图”部分,这些代码生成自己的 _destroy 字段。我不认为它们会成为问题的原因,但如有必要,我可以在编辑中添加此代码。

0 投票
2 回答
85 浏览

ruby-on-rails - 如何在将 Child 关联到 Rails 中的 Parent 之前创建一个 Child?

我有类别(父母),其中列出了Products (Children)

我希望能够直接从导航栏、应用程序的任何位置创建新产品,然后在创建过程中将其分配给类别。

但是,我得到了当前的错误:

我的应用程序是这样工作的:

楷模

路线

控制器

意见

你知道哪里出错了吗?或者在将其分配给父级之前创建一个子级是不可能的......?

提前致谢。

最好的,伊斯特

0 投票
0 回答
160 浏览

ruby-on-rails - Ruby on Rails 为嵌套类传递空哈希创建具有空值的实体

在我的项目中使用accepts_nested_attributes_for时,如果我的任何嵌套属性的哈希值有一个nil值,那么我会收到一条错误消息,

如果我将该 nil 值替换为空值,HashWithIndifferentAccess则嵌套实体将使用NULL值创建。

如果属性散列为零,是否有任何方法可以避免尝试创建实体,或者我应该从散列中删除该属性散列?


当我尝试创建一个新的User

如果我的任何属性哈希是niluser_identifier_attributes如上),那么我得到:

但是,如果我在我的方法中将nil属性设置为新的,那么实体就会用值创建。HashWithIndifferentAccessinitializeNULL