如何使用 cocoon 在 Rails 中克隆子对象?

2024-02-18

我有一个父对象,其中有许多非常相似的子对象。我有一个带有表格的表单,可以使用 cocoon 来编辑它们。有了它(和这个答案 https://stackoverflow.com/questions/18734783/nested-form-cocoon-is-it-okay-to-use-table-rows-for-nested-fields),我可以向表中添加新行,并删除现有行,而且效果很好。

我想做的是在行末尾添加另一个按钮,与删除按钮一起,将该行克隆为新行。

家长表格:

= simple_form_for @release, html: { multipart: true } do |f|
  = f.error_notification
  .col-md-12
    %table#myTable.table-striped.table-bordered
      %thead
        %tr
          %th Description
          ...
          %th Remove

      %tbody.codes
        = f.simple_fields_for :codes, wrapper: false do |code|
          = render 'code_fields', f: code
          ---> New code below would go here <---

    .links
      = link_to_add_association 'Add Code', f, :codes, data: {"association-insertion-node" => "tbody.codes", "association-insertion-method" => "append"}

    .form-actions
      = f.button :submit, class: 'btn btn-primary pull-right'

儿童部分:

%tr.nested-fields
  = f.input :id, as: :hidden
  %td= f.input :description, label: false, input_html: { class: 'input-sm myinput' }
  ...
  %td
    = link_to_remove_association f, class: 'btn btn-default btn-xs' do
      .glyphicon.glyphicon-remove

我希望能够在最后添加这样的内容td行的元素:

= link_to_add_association 'Clone', f, :codes, data: {"association-insertion-node" => "tbody.codes", "association-insertion-method" => "append"}, render_options: {locals: {code: code.object}}

我有 2 个问题。首先,cocoon 预生成要插入的 HTML 的方式,我不能将此函数调用放在部分中,因为 - 即使我的语法正确 - 它也会创建一个无限循环。

如果有某种方法可以用当前对象的值“播种”HTML 生成,我很乐意通过某种方式将 DOM 节点放置在相应表行的最后一个单元格中来解决该问题。当我想插入“克隆”按钮时,我在code.object多变的。 (作为code此时是fields_for形成对象。)

有什么办法可以做到这一点吗?render_options看起来很有希望,但我无法弄清楚这是否只是一个语法问题,或者生成器是否永远不会查看我在生成字段时传递的值的哈希值。


看看:wrap_object https://github.com/nathanvda/cocoon#wrap_object选项,它允许预初始化对象,我认为您也应该能够使用它从现有对象克隆。

例如。像这样的东西可能会起作用:

- code_to_clone = f.object
= link_to_add_association('Clone', f, :codes,
    wrap_object: Proc.new { |new_code| new_code.name = code_to_clone.name; new_code })

仅复制 1 个字段用于演示目的:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 cocoon 在 Rails 中克隆子对象? 的相关文章

  • 如何将枚举作为字符串存储到rails中的数据库中

    如何在 ruby 中创建迁移 其中默认值是字符串而不是整数 我想将枚举存储到数据库中 但我不想将其存储为整数 因为这样对于另一个应用程序来说没有意义想要使用同一张桌子 我该怎么做default female 代替default 0 clas
  • 没有 Gem 的 Rails 分页

    我的任务是在不使用 gem 的情况下为 Rails 项目创建 前 10 个 后 10 个 最新 和 最旧 链接 在控制器中 我可以显示表中第一组 最新的 10 项 before action set page only index def
  • 如何使用 RSpec 测试 javascript 重定向?

    我正在使用 xhr post 与控制器交互 并且我期待重定向 在 js erb 中 我有 window location href address 手动测试 浏览器会正确重定向 我如何使用 RSpec 测试它 response should
  • 如何验证单选按钮?

    我的 Rails 应用程序中有一个单选按钮 我想编写一个 java 脚本代码 在未选择任何选项时验证这一点 在你的 votes 类中做类似的事情 class Myvotes lt ActiveRecord Base validates vo
  • jRails 是 Rails + jQuery 必须的吗?

    我是rails新手 使用rails 2 3 10 并且想使用jquery 特别是jquery ui 该项目是一个全新的项目 我计划使用 jquery ui 中的一些小部件 如 datapicker 和 selectable 等 我听说可以安
  • rspec 测试 has_many :through 和 after_save

    我有一个 我认为 相对简单的has many through与连接表的关系 class User lt ActiveRecord Base has many user following thing relationships has ma
  • 限制 Imagemagick 使用的空间和内存

    我在 Rails 应用程序上使用 Imagemagick 使用 rmagick 但我的服务器 Ubuntu 不是很大 当我启动转换进程时 Imagemagick 占据了我的服务器 30GB HDD 的所有位置 内存 我想限制内存和 tmp
  • 与heroku配合使用的统计引擎

    我有一个 Heroku Rails 应用程序 需要处理一些重要的数字 并且我需要使用像 R 这样的统计库 更糟糕的是 MatLab 我正在寻找以下任何问题的答案 是否有不需要二进制文件的功能齐全的统计包 GEM 是否可以将 R 二进制文件作
  • Rails 4 中如何使用 attr_accessible?

    attr accessible似乎不再在我的模型中工作 Rails 4 中允许批量分配的方法是什么 Rails 4 现在使用参数强 http edgeapi rubyonrails org classes ActionController
  • Rails has_many 到 has_many 具有多个模型

    模拟以下情况的最佳方法是什么 Word belongs to wordable polymorphic gt true Phrase has many words as gt workable belongs to story Line h
  • 从使用heroku发送的邮件中删除“via sendgrid.me”

    我正在使用免费的 sendgrid 计划从 Heroku 上托管的 Rails 应用程序发送电子邮件 我使用以下组合进行设置这些说明 http devcenter heroku com articles sendgrid and 本教程 h
  • 如何从另一个 .rb 文件访问模块内和类内的 Ruby 方法

    我想知道如何从另一个 rb 文件访问此模块中的方法 module Decisioning module Decision class OfferProxy lt FinanceApplication Offer def my method
  • 测试 rake 任务中定义的方法

    我想测试 rake 任务中定义的方法 耙文件 lib tasks simple task rake namespace xyz do task simple task gt environment do begin if task need
  • Ruby on Rails 中的垃圾收集器?

    我尝试在 Google 上搜索很多有关 Rails 垃圾收集器的信息 但没有得到可靠的答案 有谁有资源来展示如何垃圾收集是在 Rails 中实现的吗 我们怎样才能控制它呢 Rails 是一个框架 而不是一种语言 Rails 背后的语言称为
  • 从heroku 提取数据库失败并出现 Encoding::CompatibilityError

    我在执行 db pull 从 heroku 回到本地开发环境时遇到一些问题 我的设置是通过 RVM 在 Mac OS X Snow Leopard 下的本地 Rails 3 Ruby 1 9 2 环境上通过 MacPorts 安装 MySQ
  • Rails I18n 翻译范围

    编写完全翻译的应用程序可能会变得乏味 有没有办法为当前上下文设置默认翻译范围 示例 我正在部分内容中写入 deadlines html erb in the 显示 html erb我的行动ProjectsController 现在 因为我想
  • 核心中的 find_by() 和 FinderMethods 中的 find_by() 有什么区别?

    目前我正在开发一个 gem 它会覆盖 ActiveRecordswhere 通过研究 我偶然发现了两种不同的find by实施 一个是在core https github com rails rails blob 5 0 stable ac
  • 两种模型,一种是 STI,一种是验证

    假设我有两个表 产品和订单 为了简单起见 假设一次只能购买一种产品 因此没有像 order items 这样的连接表 所以关系是Product有很多订单 Order属于product 因此 product id是Order表中的一个fk 产
  • 供用户使用的 Rails 模型结构

    我是 Rails 新手 正在开发我的第二个 Rails 应用程序 该应用程序将为用户提供不同的角色 但某些用户将具有多个角色 该网站的每个用户都将是艺术家 一些用户将担任主持人的角色 我将如何构建这个 在我使用的一些 PHP 应用程序中 只
  • 从 Ajax 调用时不渲染布局

    我有一个名为 index 的 Rails 操作 它可以呈现页面的内容以及布局 当我使用浏览器执行 index 操作时 它的工作方式与预期一致 我还希望能够通过使用 Ajax 调用此操作来呈现此操作 我使用以下命令来执行此操作 jQuery

随机推荐

  • 批处理文件中的 at 符号 (@) 是什么?它有什么作用?

    熟悉 windows dos 批处理脚本的人会认出这一行 echo off 在很多很多天里 我对这样的感觉感到高兴 is how echo off应该写在批次的顶部 仅此而已 然而 最近我遇到了 http getcomposer org d
  • 使用 C 计算 ASCII 文件中的行数

    我想计算 ASCII 文本文件中的行数 我认为最好的方法是计算文件中的换行符 for int c fgetc fp c EOF c fgetc fp Count word line endings if c n lines 但是 我不确定这
  • 无法确定我的测试用例是通过还是失败

    我需要在 JavaScript 中测试 事件 例如按钮单击 使用 Mocha 单击链接等 我有 3 个文件 1 Login html 2 Application js 3 test js 1 Application js文件包含以下代码 f
  • 在 Objective C 中将公历日期转换为儒略日计数

    我需要 Objective C 方法将公历日期转换为儒略日 与 PHP 方法 GregorianToJD 相同 精度 合并一天中的时间儒略日期转换 这些儒略日期转换方法产生的结果与美国海军天文台 https aa usno navy mil
  • 什么是谓词?

    作为一名业余编码员 我缺乏一些基础知识 在过去的几天里 我读了一些东西 谓词 这个词不断出现 我非常感谢有关该主题的解释 谓词的定义 可以在网上找到各种来源 例如 is 计算结果为 TRUE 或 FALSE 的逻辑表达式 通常用于指示代码中
  • 将表中的行从 utf8_turkish_ci 更新为 utf8_general_ci 有何影响?

    我无法加入某些表 因为有些表 行是 utf8 general ci 有些是 utf8 turkish ci 因此我不得不复制土耳其语 将其转换为通用语 最后使用它 但我想知道 如果我将原始表从土耳其语转换为通用表 我的应用程序会发生什么情况
  • Spark 数据帧将嵌套 JSON 转换为单独的列

    我有一个 JSON 流 其结构如下 可转换为数据帧 a 3936 b 123 c 34 attributes d 146 e 12 f 23 数据框显示函数结果如下输出 sqlContext read json jsonRDD show a
  • 在 mongodb 上每个集合使用多个模式

    我想在 mongodb 中的每个集合使用多个模式 如何使用它 当我尝试运行它时 它给了我这个错误 Error OverwriteModelError 无法覆盖allUsers模型一旦编译 OverwriteModelError 无法覆盖ch
  • 选择只有一个唯一值的 pandas 数据框列

    如何有效地选择只有 1 个唯一值的 pandas dataframe 列 我知道 DataFrame 和 Series nunique 我认为需要DataFrame nunique http pandas pydata org pandas
  • 在 Netbeans 7.1 中编译

    我无法在 Widows 7 中的 netbeans 7 1 中编译项目 错误是 mkdir exe 停止工作 我在 MinGW gt Msys gt 1 0 gt bin 中找到 mkdir exe 并运行 但没有解决这个问题 当我运行项目
  • 使用 ImageMagick (或类似的)覆盖图像的文件名

    我知道 ImageMagick 的annotate命令可以在图像上叠加一些文本 但是它可以使用图像的文件名作为该文本吗 我本来是这么认为的 但似乎找不到直接的文档来证实这一点 毫无疑问 某些参数组合可以管理此问题 或者是否有更好的方法在脚本
  • 我如何使用 jekyll & Liquid 更有效地创建这个画廊?

    我的画廊是基于我的 twitter bootstrap css 文件 我最终使用了带有内联 HTML Markdown 的 Kramdown 因为我无法让它按照我希望的方式在 Liquid 中工作 Kramdown 解析的 markdown
  • 如何获取URL的路径?

    我有一个网址 如何检索其路径部分 例如 给定 http www costo com test1 test2 如何得到 test1 test2 你想要这样的东西 String path new URL http www costo com t
  • 将JSON数据放入html表单输入隐藏?

    我正在构建一个使用大量数据的丰富的 Web 应用程序 当我构建它时 我发现我一遍又一遍地重复自己 这就是问题 我需要将隐藏的应用程序逻辑放入 HTML 元素中以表示客户端正在查看的数据 这是我前段时间发现的一个解决方案 a href bla
  • 如何求和两个对象的属性?

    我有多个 JavaScript 对象 a 12 b 8 c 17 and a 2 b 4 c 1 我需要通过键对这两个对象求和 Result a 14 b 12 c 18 你有 JavaScript 的解决方案吗 我用Object keys
  • 树遍历递归

    我是编程新手 我正在研究我的树项目 我的树看起来像这样树结构 https i stack imgur com Ld0ke png 我已经编写了遍历完整树的代码 目前我的遍历将像这样打印完整的树 A B E F C D G H I J K d
  • “realloc():下一个大小无效”[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 或者 重复
  • Android zip 文件身份验证

    如果我想创建需要压缩视频并且用户必须有密码身份验证才能打开文件的应用程序 是否可以 如果可能的话 你们能给我一些示例代码吗 谢谢 问候 尝试这样的事情 OutputStream out new ZipOutputStream new Cip
  • IE7 不尊重显示:阻止

    我正在尝试使用以下 HTML 标记进行简单的垂直导航 ul li a a li li a a li li a a li ul 尽管有display block 在两个 li and a 元素 IE7 似乎不尊重包含 div 的完整宽度 对这
  • 如何使用 cocoon 在 Rails 中克隆子对象?

    我有一个父对象 其中有许多非常相似的子对象 我有一个带有表格的表单 可以使用 cocoon 来编辑它们 有了它 和这个答案 https stackoverflow com questions 18734783 nested form coc