新手问题 nested attributes (belongs_to) 如何写 select?

itsvoid · 2012年09月20日 · 最后由 itsvoid 回复于 2012年09月20日 · 2048 次阅读

我使用的是mongoid,场景类似于: class Person ... belongs_to address accepts_nested_attributes_for :address attr_accessible :address end

然后address这个class has_many person。我的问题是我想写一个form的select,我的代码如下:

<%= form_for @person do |f|%> <%= f.fields_for :address do |address_field|%> <%= address_field.select :street, Address.all %> <% end %> <% end %>

现在的问题是,select无法显示。而我直接用: f.select或者f.collection_select可以显示select,但是无法写入address_attributes。

求解如何将select用于belongs_to场景。

共收到 3 条回复

看下文档里面的这个例子,传递的参数是 post[category_id],option 里面显示的是 Category id 和 name

collection_select(:post, :category_id, Category.all, :id, :name, {:disabled => lambda{|category| category.archived? }})

<select name="post[category_id]">
  <option value="1" disabled="disabled">2008 stuff</option>
  <option value="2" disabled="disabled">Christmas</option>
  <option value="3">Jokes</option>
  <option value="4">Poems</option>
</select>

#1楼 @diudiutang 我用过这个collection_select,生成的html结构也和文档一样, 但是父文档的address_id却写不进去,依然是nil

#1楼 @diudiutang 找到问题了,我设置了attr_accessible,所以需要另外加上address_id。。。我的问题是,没有报错,我在哪里追踪这个问题呢?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册