gpt4 book ai didi

mongodb - Mongoid embeds_many/embedded_in 与 ActiveAdmin 中的 Formtastic 的关系......?

转载 作者:可可西里 更新时间:2023-11-01 09:06:40 24 4
gpt4 key购买 nike

哇 - 许多项目都包含在这个项目中,我做了一些(广泛的)搜索但无济于事,所以抛出一个 flare 看看是否有其他人正在使用类似的堆栈并有解决方案。

我正在使用 Mongoid-enabled fork of ActiveAdmin为 Rails 3 应用构建管理界面。

ActiveAdmin(它使用 Formtastic 构建其表单)到目前为止似乎正在发挥作用。但是在尝试将此堆栈与 Mongoid 的 embeds_manyembedded_in 关系一起使用时,我遇到了麻烦。我正在努力成为一个好公民,并在 Mongo 中使用适当的数据建模技术,但 Formtastic 似乎不想配合。

我将分享我遇到的具体错误,尽管它可能很深奥。

如果我不能找到一个好的解决方案,我会接受它并只使用 has_manybelongs_to,即使我知道我会给出介绍 MongoDB 的主要优势(该应用程序不够大,因此缺少连接/多个查询会成为一个问题,但我想我会从一开始就以正确的方式做事!)。

class Location
include Mongoid::Document
embeds_many :events
field :venue_name, type: String
end

class Event
include Mongoid::Document
embedded_in :location
field :event_name, type: String
end

ActiveAdmin.register Event do
form do |f|
f.inputs do
f.input :event_name
f.input :location, :as => :select
end
f.buttons
end

它在 f.input :location 行上窒息并抛出:

ActionView::Template::Error (undefined method `event_id' for #<Event:0x007fa4224a20e0>):
1: insert_tag renderer_for(:new)

我将 :as => :select 更改为 :as => :check_boxes 并且实际上让它显示正确的位置(虽然是复选框,而不是选择或 radio )。但是在提交表格后,我收到了:

Mongoid::Errors::NoParent (
Problem:
Cannot persist embedded document Event without a parent document.
)

在查看原始提交时,它试图将我的选择作为“event_id”而不是父文档(位置)的 ID 发送。

无论如何 - 我的直觉是我正在尝试将方形钉子装入此处的圆孔中,但如果其他人有任何想法,他们将不胜感激。

最佳答案

错误说明了一切。如果没有先创建父项,则无法创建嵌入记录。

是的,我认为在您的情况下 has_many 和 belongs_to 关系将是正确的选择。

关于mongodb - Mongoid embeds_many/embedded_in 与 ActiveAdmin 中的 Formtastic 的关系......?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13499212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com