form_for非AR模型 - fields_for Array属性不迭代

Cho*_*ett 9 activemodel ruby-on-rails-3

我无法fields_for开始处理非ActiveRecord模型的Array属性.

蒸馏下来,我必须遵循:

车型/ parent.rb

class Parent
  extend ActiveModel::Naming
  include ActiveModel::Conversion
  include ActiveModel::Validations
  extend ActiveModel::Translation

  attr_accessor :bars
end
Run Code Online (Sandbox Code Playgroud)

控制器/ parent_controller.rb

def new_parent
  @parent = Parent.new

  @parent.bars = ["hello", "world"]
  render 'new_parent'
end
Run Code Online (Sandbox Code Playgroud)

意见/ new_parent.html.haml

= form_for @parent, :url => new_parent_path do |f|
  = f.fields_for :bars, @parent.bars do |r|
    = r.object.inspect
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,我的页面包含["hello", "world"]- 也就是inspect调用分配给的数组的结果bars.(@parent.bars省略了fields_for,我只是nil显示).

如何使fields_forAR关联成为行为 - 也就是说,对于我的bars数组的每个成员,在块中执行一次代码?

Cho*_*ett 11

我认为正确的技术是:

= form_for @parent, :url => new_parent_path do |f|
  - @parent.bars.each do |bar|
    = f.fields_for "bars[]", bar do |r|
      = r.object.inspect
Run Code Online (Sandbox Code Playgroud)

为什么它不能成为Just Work我不确定,但这似乎可以解决问题.