问题标签 [cocoon-gem]
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.
jquery - Rails 嵌套表单模型创建失败使用茧静默
我将 Mongoid 2.4.12 和 Rails 3.2.8 与cocoon一起使用。我的嵌套表单在前端似乎完美无缺,但嵌套模型和关系没有被保存。
项目
任务
项目视图
任务部分
这是我的参数:
如您所见,我没有收到任何关于accepts_nested_attributes_for
等的错误。
在我的projects#create
操作中,我可以在之后进行调试@project.save
并看到它@project.tasks
正确返回了一个任务的数组。然而,这个任务永远不会被创建/插入/保存,之后也没有关系。关于我可能遗漏的任何建议?
ruby-on-rails - 茧宝石错误:未定义的方法`new_record?对于零:NilClass
我正在建立一个关系公司:has_many 注释。
我希望能够在 Comany#show 资源中为刚创建的公司添加一些新注释。所以在公司脚手架的show.html.erb
我已经一步一步地遵循了茧演示应用程序和 github mardown,但示例仅显示了将嵌套属性添加到 _form.html.erb 部分的方法。我不知道是否有一些特殊的事情要做不同的事情,但是当我尝试运行 Company#show 操作时,它会检索到这个错误:
未定义的方法`new_record?对于零:NilClass
这是我的代码:
显示.html.erb:
_note_fields.html.erb:
公司.rb:
笔记.rb
company_controller.rb
谢谢!戴夫
jquery - cocoon nested_form 在 edit.html.erb 中的现有对象上方而不是下方添加字段
我的 new.html.erb 工作正常。
但在我的 edit.html.erb 中,假设我有 3 个现有部门......
每当我单击添加部门链接(添加另一个字段)时,它都会继续在现有部门上方而不是在下方。
顺便说一句,我的协会说部门有很多部门,部门属于部门。
在我的控制器中:有我的新方法和编辑方法
我需要 cocoon js 文件,所以我使用默认值而不是覆盖其他内容。
茧.js
在我的 _form.html.erb
我渲染的是_department_fields.html.erb
我想知道为什么新添加的字段高于我的 edit.html.erb 中的现有字段
ruby-on-rails - 使用 Cocoon 创建复杂的嵌套表单
我创建了一个复杂的嵌套表单,但是我的应用程序根据该表单的输入正确创建/编辑记录的部分存在问题。
待办事项场景:我需要从一堆写有任务的小论文中将任务一个接一个地输入到我的表单中(每个“提交”按一个任务)。每个任务都有一个 :project_number、一个 :project_number_type 和一个 :owner 写在上面。在我的应用程序中,这些属性位于模型 ProjectNumber(前两个)和 Owner(最后一个)中。(我必须制作一个单独的 ProjectNumber 模型,因为我的项目有时可以有多个不同 project_number_types 的:project_numbers。)
我的表单显示了上述每个属性的正确嵌套fields_for
字段。(我省略了诸如 accept_nested_attributes_for 之类的内容)。
2个相关(我认为)问题:
我的表单从不创建任何新项目!我用来创建嵌套表单的 Cocoon gem 让我为每个嵌套模型创建表单部分。在 Project 部分中,由于我的 Project 模型本身没有 :number 属性,而是与 ProjectNumbers 模型相关联,因此我只引用了 ProjectNumbers 部分及其属性。
如果任务的 :project_number、:project_number_type 和 :owner 都与与现有项目关联的那些匹配,我需要将我的应用程序添加到
edit
具有新任务的现有项目中。否则,它应该create
属于该任务的新项目。
我在这里和其他地方读了很多小代码,但我需要更多的东西,也许包括“什么”.first_or_initialize
和“哪里”,比如/models/task.rb
, 或tasks_controller.rb
? 也许我需要创建一些自定义的东西?非常感谢!
编辑:这是表单部分
====/views/tasks/_form.html.slim
====/views/tasks/_project_fields.html.slim
ruby-on-rails-3 - Rails 3 Cocoon link_to_add_association 部分渲染两次
正如预期的那样,我的部分被渲染了两次而不是只渲染一次。有什么想法吗?
这是我的个人视图
模型(删除了常量和验证等内容):
我的 _record_fields.html.erb 部分看起来像这样:
一个有趣的问题是,如果我更改生成部分的位置(所以“之后”而不是默认的“之前”link_to_add_association 链接),它会在按钮之后生成部分,但在 link_to_add_association 链接之前生成副本。
我能找到的唯一类似的问题是与生产中的缓存有关。这发生在开发中,并且我的缓存已关闭(默认情况下)。
我错过了什么吗?任何人都可以帮忙吗?
编辑: 查看 cocoon JavaScript,似乎单击事件被调用两次(使用 $('.add_fields').click() 进行测试,触发 $('.add_fields').live('click' , function() {...} ) 两次。我仍然不知道为什么会发生这种情况。非常感谢输入。
编辑#2:
控制器:
ruby-on-rails - 嵌套 :has_many 茧
我正在使用cocoon
gem 创建一个嵌套形式,深度为 3 个对象。我的第一组对象工作得很好,渲染新的部分并添加到记录中,但是在尝试添加另一个嵌套has_many
的相关对象时,表单正在呈现,但对象没有正确保存。完整的代码“视图和模型”在这里。
ruby-on-rails - 从 Ruby on Rails 中的现有嵌套对象/模态创建嵌套对象/模态
我在我的项目中使用深度嵌套模型(使用 simple_form 和 cocoon)。只要所有嵌套对象都是新的,一切都会正常工作。
我的问题是,我想从现有(嵌套)对象创建嵌套对象。
这是我的模型
工作流程如下:
新应用程序 --> 新提交者 --> 新子项
所有这些都可以使用一种形式创建。
此外,我还想实现以下过程:
新应用程序 -->现有提交者 --> 新子项
现有对象应由下拉列表框选择。
这是视图的(简化的,工作的)代码:
新的.html.erb
_submitter_fields.html.erb
_child.html.erb
_child_fields.html.erb
现在我想添加一个包含所有现有提交者的下拉列表。例如:
我的问题从这里开始:要构建用于向所选提交者添加新孩子的表单,我需要将此对象分配给表单构建器。我不知道该怎么做。
有人可以给我一个提示如何实现这个吗?或者这种情况根本不可能?
提前致谢!
基督教
ruby-on-rails - 使用茧自动以嵌套形式添加子项
假设我有这些模型,我打算在同一个表单上添加/删除:
我已经让 Cocoon 使用“添加问题”链接,然后使用“添加答案”链接,单击该链接时,会相应地添加新项目。
我想知道的是,是否可以让 Cocoon 在单击链接时自动添加“子”嵌套项。例如(使用上述模型示例),当用户点击“添加问题”链接时,我想在创建“新问题”记录后自动创建“新答案”记录。
我找到了这个链接(Rails - Dynamically build deep nested objects (Cocoon / nested_form)),但我无法完全理解。
Cocoon 可以做到这一点吗?
ruby-on-rails - 使用 Twitter Bootstrap 和 Cocoon 的标签链接的唯一嵌套子标识符
我有一个 Ruby on Rails 应用程序,其中一部分包含 Twitter Bootstrap 选项卡,用户可以使用 Simple Form 和 Cocoon 添加该部分的多个实例。
为了使选项卡链接正常工作,我必须为部分的每个新子项中的选项卡设置唯一名称(以便单击特定选项卡会激活其自己的唯一内容,而不是在前一个子部分出现在同一页面上)。
我在这里看到将代码添加到 Cocoon 以实现此目标:https ://github.com/nathanvda/cocoon/pull/100 。
在那次讨论中,有迹象表明新功能已在 Cocoon Simple Form Demo 项目中进行了试用。但是在尝试新功能的过程中所做的任何更改都没有在那里提交(至少据我所知)。
查看 github 上的提交,似乎已经在 Cocoon javascript 代码中通过将 '[contentNode]' 添加到 'insertionNode.trigger' 调用(https://github.com/woto/cocoon/提交/cb206d501e4749a05e0c1d868911da159c8200c1):
我对这些东西不是很老练。
那么,如何为嵌套子项的每个新实例实现/获取唯一标识符?
任何帮助或方向将不胜感激。
这是我的应用程序中的代码供参考:
-# /app/controllers/parent_records_controller.rb
-#/app/views/parent_records/_form.html.haml
-#/app/views/parent_records/form_partials/_item --- --- TAB HREF 名称是我需要唯一标识符的地方 --- ---
-#/app/views/parent_records/form_partials/_picture
编辑/后续问题:
下面 Nathan 的回答适用于添加唯一标识符,但添加唯一标识符破坏了 Bootstrap 的选项卡功能。鉴于我的印象是 Bootstrap javascript 可能仅在文档最初加载时评估选项卡和链接之间的对应关系,这似乎是有道理的。
谁能指出我如何让 Bootstrap javascript 重新初始化并找到新的 id 和链接?
编辑2
事实证明(我认为)是 div.well.span
分离.nested-fields
并且.tabbable
阻止了 Bootstrap 能够初始化新命名的href
和选项卡 ID。疯狂的旅程,但最终令人满意。