如何在 Rails 6 中使用茧宝石

Posted

技术标签:

【中文标题】如何在 Rails 6 中使用茧宝石【英文标题】:How to use cocoon gem in Rails 6 【发布时间】:2020-01-18 08:30:09 【问题描述】:

一直在使用 cocoon gem 用于 rails 4 和 rails 5 应用程序中的嵌套表单。目前,我正在将其中一个 rails 5.2 应用程序(使用 cocoon gem)更新到 rails 6。

由于 rails 6 使用 webpacker,所以我厌倦了像以前版本的 rails 一样在 application.js 文件中要求 cocoon javascript

app/javascript/application.js

//= require cocoon

但不幸的是,事情似乎并不奏效。也尝试过导入,但当然,它也无法正常工作,因为 cocoon 不能作为 javascript 包使用。

对此有任何解决方案或替代方案吗?

【问题讨论】:

【参考方案1】:

更新的解决方案:Cocoon 包已经发布,因此可以轻松地与 wepacker 一起使用它

在您的 Gemfile 中添加以下内容:

gem "cocoon"

添加配套包

yarn add @nathanvda/cocoon 

然后在您的app/javascripts/packs/application.js 中添加

require("jquery")
require("@nathanvda/cocoon")

旧解决方案:

cocoon GitHub 存储库上有这个 Pull Request 非常适合我。

此分支中提供了Package.json,因此我们可以使用yarn或npm通过提供GitHub repo链接来安装包。

纱线添加 github:nathanvda/cocoon#c24ba53

Cocoon 包将安装,您可以检查您的 package.json 文件。

“茧”:“github:nathanvda/cocoon#c24ba53”

提交号#c24ba53 很重要,请确保它包含在您的package.json 文件中

之后,您可以在application.js文件中导入cocoon.js。

导入“茧”;

【讨论】:

不工作。出现类似“未定义方法 `link_to_add_association' 的错误” @faisalbhatti 您也必须像我们通常那样安装 gem。这只是我们导入 javascript 文件的部分 其实我们应该调用appplication.js " import 'cocoon/app/assets/javascripts/cocoon' "【参考方案2】:

茧页面上有一个'hack':

https://github.com/nathanvda/cocoon/issues/555

【讨论】:

【参考方案3】:

首先:运行

yarn add cocoon-js

第二:添加到application.js

import 'cocoon-js'

【讨论】:

link_to_add_association 和其他辅助方法呢?【参考方案4】:

照常安装cocoon ruby​​gem

yarn add cocoon-js-vanilla

// app/javascript/packs/application.js 在这个文件的顶部做:

import "cocoon-js-vanilla";

灵感来自:https://github.com/joerodrig/cocoon-js

【讨论】:

以上是关于如何在 Rails 6 中使用茧宝石的主要内容,如果未能解决你的问题,请参考以下文章

Rails 6嵌套形式茧不会保存子对象

如果对象在 Rails 6 中以嵌套形式不存在,如何创建对象?

Rails 6:如何通过 webpacker 添加 jquery-ui?

如何编写带有图标的茧删除链接

Ruby on Rails - 在填写表单时更新 collection_select

如何使用地理编码宝石获得时区?