Pregunta

Tengo el siguiente a muchas asociaciones. El documento tiene muchas secciones y la Sección tiene muchos artículos.

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

Y el 'editar' la acción de la siguiente manera: -

def edit
  @document = Document.find(params[:id])
end

Aquí es el 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 %>

Tengo que especificar las opciones de hash con el atributo de valor establecido, por ejemplo:

options = {:value => item.comments} 

con el fin de mostrar los comentarios de artículo al hacer clic en el enlace 'Editar' para modificar los comentarios del artículo. ¿No deberían ser cargados por defecto, lo que parece ser el caso de comentarios de cabecera.

Gracias por responder. Sí, quiero hacer que el área de texto con el valor item.comments de la base de datos. El código de abajo que tenía, no carga los comentarios.

<% s.fields_for :item, :index => item.id do |i| %>
 <p>
  <%= i.text_area :comments %> 
 </p>
<% end %>

¿Me puede explicar por qué

<%= text_area(:item, :comments) %> 

obras, sino

<%= i.text_area :comments %> 

no lo hace. Gracias mucho.

¿Fue útil?

Solución

Parece que su comprensión de options no es correcto. Aquí es lo que es:

  

opciones adicionales en la etiqueta de entrada se pueden pasar como un hash con opciones

Lo que significa que los conjuntos options atributos de la etiqueta HTML.

No se ha especificado qué es exactamente lo que quiere hacer en la pregunta, pero supongo que desea renderizar la etiqueta área de texto con item.comments como un valor. Si es así, se puede utilizar el segundo parámetro method (ver los documentos href="http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#M001611" ) e intente esto:

text_area(:item, :comments, :size => "20x30")
# => <textarea cols="20" rows="30" id="item_comments" name="item[comments]">
#      #{@item.comments}
#    </textarea>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top