0

ここで何が間違っているのかわかりません。しかし、複数のモデルを含むフォームを作成しようとしています。私はそれを読みましたが、それは簡単に思えますが、子モデルのフィールドをフォームにレンダリングすることができません。解決策を理解しているので、モデルに以下を入れなければなりません

class Message < ActiveRecord::Base
  #parent model
  attr_accessible :duns, :ord
  has_many :po_recommits
  accepts_nested_attributes_for :po_recommits
end

class PoRecommit < ActiveRecord::Base
  #child model
  attr_accessible :comment, :detail_reason_code, :pid, :po, :qty, 
  belongs_to :message, :dependent => :destroy
end

以下を親コントローラーに入れ、プレースホルダーを作成します

def new
  @message = Message.new
  5.times { @message.po_recommits.build }
end

最後に fields_for ヘルパーをビューに追加します

<%= form_for @message do |f| %>
  <%= f.label :org %><%= f.text_field :org %>

  <% f.fields_for :po_recommits do |builder| %>
    <%= builder.label :po %><%= builder.text_field :po %>
  <% end %>

<%= f.submit %>

<% end %>

このコードはエラーをスローしませんが:po、フォームのフィールドをレンダリングしません。これは、ブロックが0回実行されているためだと思います。

私は何が欠けていますか?

4

1 に答える 1

1

I think <% f.fields_for :po_recommits do |builder| %> should be <%= f.fields_for :po_recommits do |builder| %>

于 2012-09-24T02:44:41.597 に答える