次の1対多の関連付けがあります。ドキュメントには多くのセクションがあり、セクションには多くのアイテムがあります。
class Document < ActiveRecord::Base
has_many :document_sections, :dependent => :destroy, :autosave => true
has_many :document_items, :through => :document_sections
end
class DocumentSection < ActiveRecord::Base
belongs_to :document
has_many :document_items, :dependent => :destroy, :autosave => true
end
class DocumentItem < ActiveRecord::Base
belongs_to :document_section
end
そして、「編集」アクションは次のとおりです:-
def edit
@document = Document.find(params[:id])
end
ここに edit.html.erb があります
<h1>Edit!</h1>
<% form_for(@document) do |f| %>
<%= f.error_messages %>
<p>
<p> Header Comment <p/><br />
<%= f.text_field :comment %>
<%= f.hidden_field :uid %>
</p>
<% @document.document_sections.each do |section| %>
<% f.fields_for :section, :index => section.id do |s| %>
<p>
<%= s.hidden_field :seqnum, options = {:value => section.seqnum} %>
</p>
<% section.document_items.each do |item| %>
<% s.fields_for :item, :index => item.id do |i| %>
<p>
<%= i.text_area :comments, options = {:value => item.comments} %>
</p>
<% end %>
<% end %>
<% end %>
<% end %>
<p>
<%= f.submit "Submit Comments" %>
</p>
<% end %>
たとえば、次のように、value 属性を設定してオプション ハッシュを指定する必要があります。
options = {:value => item.comments}
「編集」リンクをクリックしてアイテムのコメントを変更したときにアイテムのコメントを表示するため。ヘッダーコメントの場合のように、デフォルトでロードされるべきではありません。
返信ありがとうございます。はい、データベースの item.comments 値でテキスト領域をレンダリングしたいと思います。私が持っていた以下のコードは、コメントをロードしません。
<% s.fields_for :item, :index => item.id do |i| %>
<p>
<%= i.text_area :comments %>
</p>
<% end %>
理由を説明してもらえますか
<%= text_area(:item, :comments) %>
動作しますが
<%= i.text_area :comments %>
ではない。どうもありがとう。