تحميل بيانات الجمعيات من قاعدة البيانات إلى Edit.html.erb

StackOverflow https://stackoverflow.com/questions/2420889

  •  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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top