gpt4 book ai didi

ruby-on-rails - 以 Rails 形式处理 MongoMapper EmbeddedDocument

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

首先,我是一般编程的新手,也是 Rails 的新手。我选择 Rails 是因为它似乎是一门容易上手的语言。对于我的项目,我将 MongoMapper 与 Rails 结合使用。

我正在尝试以与文档相同的形式处理嵌入式文档。

我有以下模型:

class User
include MongoMapper::Document

key :email, String, :required => true
key :first_name, String
key :last_name, String
key :role, String
many :addresses
timestamps!
end

class Address
include MongoMapper::EmbeddedDocument

key :location, String
key :street, String
key :city, String
key :zip, Integer
key :state, String
key :country, String

end

我想在创建/编辑文档的同时创建/编辑嵌入式文档。我试过使用 fields_for:

<% f.fields_for :address, @user.addresses do |address| -%>
<div class="field">
<%= address.label :street %><br />
<%= address.text_field :street %>
</div>
<% end %>

但是我明白了

undefined method `street' for #<\Array:0x0000010126e3f8>

提前谢谢你。

最佳答案

如果您在 User 上定义 addresses_attributes=

fields_for 将起作用。出于某种原因,如果您定义该方法,fields_for 实际上会更改其行为。

这是一个示例实现:

def addresses_attributes=(id_and_attrs)    
id_and_attrs.each do |id, attrs|
address = self.addresses.find(id) || self.addresses.build(:id => id)
address.attributes = attrs
end
end

未经测试,因此您必须解决问题。特别是,我不记得如果地址是全新的因为用户是新用户,那么嵌套参数是如何以不同方式出现的。

关于ruby-on-rails - 以 Rails 形式处理 MongoMapper EmbeddedDocument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5817439/

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