class Ecard
include MongoMapper::Document
key :family, String
key :given, String
key :additional, String
key :prefix, String
key :suffix, String
has_many :emails
end
class Email
include MongoMapper::EmbeddedDocument
key :pref, Boolean
key :email, String
end
在电子贺卡控制器中
def new
@ecard = Ecard.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @ecard }
end
end
并以我的形式
<%= form_for(@ecard) do |f| %>
<%= f.label t :family, :scope => :name %>
<%= f.text_field :family %>
<%= @ecard.emails.each do |email| %>
<%= f.fields_for email, :index => email do |e| %>
<%= e.label :pref %>
<%= e.check_box :pref %>
<%= e.label :email %>
<%= e.text_field :email %>
<% end %>
<% end %>
<% end %>
如何创建新的电子邮件嵌套资源?
1 回答
虽然mongomapper不支持“accepts_nested_attributes_for”,但是对于我来说,使用rails 3.2.7,mongo_mapper 0.11.2,mongo 1.6.4,bson 1.6.4 . 经常参考“rake routes”,直到路由正确,即url_for,控制器方法等 . 请注意email.id的隐藏字段和带有创建新电子邮件项的路径的按钮 . 这仅适用于嵌入式关联中的新项目(您可以完成放置/更新) . 希望这有助于您前进 .
加里
应用程序/控制器/ ecards_controller.rb
应用程序/控制器/ emails_controller.rb
应用程序/视图/电子贺卡/ show.html.erb
配置/ routes.rb中