首先,我对一般编程和 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 %>
但我得到
# 的未定义方法“street”
先感谢您。
fields_for
如果你定义的话就会起作用addresses_attributes=
on User
。因为某些原因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
未经测试,所以你必须解决这些问题。特别是,如果地址是全新的,因为用户是新的,我不记得嵌套参数如何以不同的方式通过。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)