سؤال

وهكذا أنا عندي نموذج في بلدي التطبيق القضبان التي تستخدم FormBuilder العرف أن تعطيني بعض العلامات الحقل المخصص

<% form_for :staff_member, @staff_member, :builder => MyFormBuilder do |f| %>
[...]
    <%= render :partial => "staff_members/forms/personal_details", :locals => {:f => f, :skill_groups => @skill_groups, :staff_member => @staff_member} %>  
[...]
<% end %>

والآن، وهذا هو جزئي في منطقة من النموذج الذي يحصل يستبدل من قبل رد AJAX. ما ينتهي به من وحدة تحكم في استجابة لطلب AJAX هي:

render :partial => "staff_members/forms/personal_details", :locals => {:skill_groups => @skill_groups, :staff_member => @staff_member}

ولكن، إذا فعلت ذلك ثم فواصل شكل، ككائن FormBuilder كنت في form_for لم تعد متوفرة. هل هناك أي طريقة بالنسبة لي لاستخدام بلدي مخصص FormBuilder الكائن داخل المستخدمة جزئيا لرد AJAX؟

هل كانت مفيدة؟

المحلول

استخدم fields_for داخل الجزئي الخاص بك. ينفذ مهمة مماثلة ولكن دون التفاف العلامات النموذج. رؤية API مستندات .

نصائح أخرى

وماذا عن هذا؟

  @template.with_output_buffer do
    @template.form_for @model_object do |f|
      f.fields_for :some_nested_attributes do |ff|
        render :partial => 'nested_attributes', :object => @model_object, :locals => {:form => ff}
      end
    end
  end

وهذا من شأنه أن يكون مفيدا بشكل خاص هو ما تحتاجه لاستخدام fields_for متداخلة في جزئية

هل يمكن مثيل مثيل جديد من شكل البناء الخاص في تحكم، على الرغم من أنه يشعر نوعا من رديء لي:

# in the controller
render :partial => {
  :f => MyFormBuilder.new(:staff_member, @staff_member, template),
  :skill_groups => @skill_groups,
  :staff_member => @staff_member
}

وبدلا من ذلك، يمكن أن تتحرك أكثر من منطق التحديث ليكون العميل والتي لن تتطلب منك ما يدعو للقلق مما يجعل أي شيء على الإطلاق. هل يمكن أن مجرد تحديث القيم عبر JS. لست متأكدا ما اذا كان يعمل لمشروعك بالرغم من ذلك.

وربما أنا في وقت متأخر قليلا في اللعبة هنا، وربما أنا لا أفهم السؤال بشكل صحيح، ولكن في ApplicationHelper.rb أعتقد يمكنك فقط إضافة السطر:

ActionView::Base.default_form_builder = MyFormBuilder

ويمكن أن تقدم في اياكس، فعليك الاتصال محتوى f.object_name (انها تعمل أيضا مع جزئيات) واستخدامه لعلامات محددة في <أ href = لتقديم "http://api.rubyonrails.org/classes/ActionView/ المساعدون / FormTagHelper.html "يختلط =" نوفولو "> http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html يمر أنها الوسيطة الأولى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top