تحميل بيانات الجمعيات من قاعدة البيانات إلى Edit.html.erb
-
19-09-2019 - |
سؤال
لدي واحدة التالية إلى العديد من الجمعيات. يحتوي المستند على العديد من الأقسام والقسم لديه العديد من العناصر.
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}
من أجل إظهار تعليقات البند عند النقر فوق رابط "تحرير" لتعديل تعليقات العنصر. لا ينبغي تحميلها بشكل افتراضي، والذي يبدو أنه هو الحال لتعليقات الرأس.
شكرا على الرد. نعم، أريد تقديم منطقة النص مع قيمة العنصر من قاعدة البيانات. رمز أدناه كان لدي، لا تحميل التعليقات.
<% s.fields_for :item, :index => item.id do |i| %>
<p>
<%= i.text_area :comments %>
</p>
<% end %>
هل تستطيع أن تفسرني لماذا
<%= text_area(:item, :comments) %>
يعمل ولكن
<%= i.text_area :comments %>
لا. شكرا جزيلا.
المحلول
يبدو فهمك ل options
غير صحيح. هنا ما هو:
يمكن تمرير خيارات إضافية في علامة الإدخال كتعصب مع خيارات
مما يعنى options
مجموعات السمات لعلامة HTML.
لم تحدد ما تريد القيام به بالضبط في السؤال، لكنني أفترض أنك تريد تقديم علامة Textarea مع item.comments كقيمة. إذا كان الأمر كذلك، يمكنك استخدام المعلمة 2nd method
(انظر مستندات) وجرب هذا:
text_area(:item, :comments, :size => "20x30")
# => <textarea cols="20" rows="30" id="item_comments" name="item[comments]">
# #{@item.comments}
# </textarea>