问题标签 [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 - Rails 6:无法删除嵌套模型。随机插入语句
我将 Rails 6 与 Postgres 一起使用,并且在删除嵌套模型时遇到问题。删除关联后会生成随机插入语句。
让我解释一下我的设置。
迁移
楷模
控制器
请求参数
这些是日志
为什么在删除调用后会生成插入?这甚至不是回滚。
注意:我在 Cards belongs_to 迁移中尝试了 null:true 和 null:false。我还尝试在 Card 模型中的 belongs_to :entry 语句中设置 optional:true
ruby-on-rails - rails - 在更新嵌套属性时将预先存在的记录分配为嵌套关联
我没有使用 rails 表单,因为这一切都来自我正在解析的 XML。对于我的要求,我需要将现有记录分配为嵌套关联,同时更新该关联的选定属性。
我的模型如下:
现在,要分配现有的用户记录,我的列表参数应该是
要包括用户记录属性更改,我的列表参数应该是:
然后我当然会做作业并保存:
仅使用以前的参数不允许我agency_id
在同一个数据库事务中进行更新;而使用后一个参数会创建一个新的用户记录。
我最初的尝试是以某种方式合并两个参数集:
这导致了以下结果:
旁注:我希望能够同时支持更新和创建具有相同参数集的操作。
由于那不起作用,我尝试了另一种混合动力:
但是这个也创建了一个具有正确的新用户agency_id
,而忽略了该user_id
属性。
有没有办法User.find(1230)
在更新同agency_id
一个 ActiveRecord DB 请求和参数集中的同一个用户时分配现有的?
ruby-on-rails - Railscarrierwave-base64 与 accept_nested_attributes_for
我正在尝试使用carrierwave-base64 和accepts_nested_attributes_for 上传文件,但出现“文件不能为空”错误。这是我正在尝试的示例:
但是如果我像下面的代码那样做,它会起作用:
我究竟做错了什么?
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 条件过滤我想要的值。
在这方面的任何帮助都会非常棒。谢谢。
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
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
:
ruby-on-rails - 如果标记为销毁的嵌套属性不存在,则不要引发 ActiveRecord::RecordNotFound
我将Rails 嵌套属性与allow_destroy: true
. 如果我这样称呼:
并且deck_item
with id1000
不存在 Rails 引发异常ActiveRecord::RecordNotFound
。
有没有办法告诉 Rails 不要抛出异常而忽略该记录?
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 字段。我不认为它们会成为问题的原因,但如有必要,我可以在编辑中添加此代码。
ruby-on-rails - 如何在将 Child 关联到 Rails 中的 Parent 之前创建一个 Child?
我有类别(父母),其中列出了Products (Children)。
我希望能够直接从导航栏、应用程序的任何位置创建新产品,然后在创建过程中将其分配给类别。
但是,我得到了当前的错误:
我的应用程序是这样工作的:
楷模
路线
控制器
意见
你知道哪里出错了吗?或者在将其分配给父级之前创建一个子级是不可能的......?
提前致谢。
最好的,伊斯特
ruby-on-rails - Ruby on Rails 为嵌套类传递空哈希创建具有空值的实体
在我的项目中使用accepts_nested_attributes_for
时,如果我的任何嵌套属性的哈希值有一个nil
值,那么我会收到一条错误消息,
如果我将该 nil 值替换为空值,HashWithIndifferentAccess
则嵌套实体将使用NULL
值创建。
如果属性散列为零,是否有任何方法可以避免尝试创建实体,或者我应该从散列中删除该属性散列?
当我尝试创建一个新的User
:
如果我的任何属性哈希是nil
(user_identifier_attributes
如上),那么我得到:
但是,如果我在我的方法中将nil
属性设置为新的,那么实体就会用值创建。HashWithIndifferentAccess
initialize
NULL