使用Rails fields_for进行Mongoid embeds_many

时间:2011-08-02 20:09:10

标签: ruby-on-rails ruby mongoid form-for fields-for

我有一个这样的模型:

class Search
  include Mongoid::Document

  embeds_many :terms

  accepts_nested_attributes_for :terms
end

class Terms
  include Mongoid::Document

  embedded_in :search, inverse_of: :terms

  field :some,    type: String
  field :search,  type: String
  field :terms,   type: String
end

我有一些haml看起来像:

= form_for @search do |f|
  - f.fields_for(:terms) do |term_form|
    = term_form.label :some
    = term_form.text_field :some
    = term_form.label :search
    = term_form.text_field :search
  = f.submit 'Save'

我的搜索#新方法如下:

@search = Search.new
@search.terms.build

如果页面上出现任何内容,我会很喜欢它,但事实并非如此。

如何使用form_for和fields_for为Mongoid embeds_many嵌入文档创建表单?

为了记录,我也试过haml,看起来像:

= form_for @search do |f|
  - @search.terms.each do |term|
    - f.fields_for(term) do |term_form|
....

以及其他一些变化,都无济于事。

2 个答案:

答案 0 :(得分:2)

你的表格似乎很好 - 但我注意到你的控制器动作中有一个错字。不确定这只是你问题或实际应用中的错字,但是

@search.parties.build

应该是

@search.terms.build

答案 1 :(得分:1)

this问题有我的答案。

rails 3想要

- f.fields_for(:terms) do |term_form|

= f.fields_for(:terms) do |term_form|

所以事实证明它与mongoid关系完全无关。假设我是愚蠢的。