Laden Zuordnungsdaten aus der Datenbank in edit.html.erb
-
19-09-2019 - |
Frage
Ich habe folgende eine bis viele Assoziationen. Dokument hat viele Abschnitte und Abschnitt hat viele Artikel.
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
Und die 'Bearbeiten' Aktion wie folgt: -
def edit
@document = Document.find(params[:id])
end
Hier ist die 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 %>
Ich habe, um die Optionen angeben Hash mit dem Wert Attribute gesetzt, für zB:
options = {:value => item.comments}
, um die Artikel Kommentare zu zeigen, wenn ich Sie auf den Link ‚Bearbeiten‘ den Punkt Kommentare zu ändern. Sollten sie nicht standardmäßig geladen werden, was der Fall für Kopf Kommentare zu sein scheint.
Vielen Dank für die Beantwortung. Ja, ich mag den Textbereich mit dem item.comments Wert aus der Datenbank machen. Der Code unten ich hatte, nicht die Kommentare laden.
<% s.fields_for :item, :index => item.id do |i| %>
<p>
<%= i.text_area :comments %>
</p>
<% end %>
können Sie mir erklären, warum
<%= text_area(:item, :comments) %>
funktioniert, aber
<%= i.text_area :comments %>
nicht. Dank viel.
Lösung
Es scheint, Ihr Verständnis von options
nicht korrekt ist. Hier , was es ist:
Zusätzliche Optionen auf dem Input-Tag können als Hash mit Optionen übergeben werden
Was bedeutet, dass options
Sätze für die HTML-Tag-Attribute.
Sie hat nicht angegeben, was genau Sie in der Frage tun wollen, aber ich nehme an, Sie Textarea-Tag mit item.comments als Wert machen möchten. Wenn ja, dann können Sie den zweiten Parameter method
(siehe die docs rel="nofollow ) und versuchen Sie dies:
text_area(:item, :comments, :size => "20x30")
# => <textarea cols="20" rows="30" id="item_comments" name="item[comments]">
# #{@item.comments}
# </textarea>