2010-03-10 78 views
0

我有以下一对多关联。文档有很多部分,部分有很多项目。将关联数据从数据库加载到edit.html.erb

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 %> 

我必须指定的选项与哈希值属性例如:

options = {:value => item.comments} 

in为了显示项目评论当我点击'编辑'链接修改项目评论。不应该默认加载它们,这似乎是标题注释的情况。

感谢您的回复。是的,我想使用数据库中的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 %> 

没有。非常感谢。

回答

0

看来你对options的理解是不正确的。 Here is它是什么:

输入标签的其他选项可以与选项

哈希这意味着options集的HTML标记属性进行传递。

你没有具体说明你想要在问题中做什么,但我假设你想用item.comments作为值来呈现textarea标签。如果是这样,那么你可以使用第二个参数method(见docs)并试试这个:

text_area(:item, :comments, :size => "20x30") 
# => <textarea cols="20" rows="30" id="item_comments" name="item[comments]"> 
#  #{@item.comments} 
# </textarea>