Я пытаюсь динамически создавать элементы формы с учетом определенного запроса AJAX.
Это мои настройки:
Вид:
<%= link_to 'Next', check_unique_id_students_path, :remote => true %>
<div id="guardian_student_details"></div>
Контроллер:
def check_unique_id
@student = Student.new
@this_form = ActionView::Helpers::FormBuilder.new(:student, @student, @template, {}, proc{})
end
JS:
jQuery("#guardian_student_details").html("<%=escape_javascript(render :partial => "student_details", :locals => { :s => @this_form }) %>");
Частичная:
<% puts s.text_field :first_name %>
<% puts s.field_helpers %>
В целях отладки я поместил следующие строки в самом начале моей части:
<% puts s.class.to_s %>
<% puts s.object.to_s %>
Это распечатывает:
ActionView::Helpers::FormBuilder
Student
Это должно работать. Однако рельсы выдают следующую ошибку:
ActionView::Template::Error (undefined method `text_field' for nil:NilClass):
1: <% puts s.class.to_s %>
2: <p>
3: <%= s.text_field :first_name, :class => 'text_input is_empty' %>
4: <%= s.label :first_name %><strong>*</strong>
5: </p>
6:
app / views / Students / _student_details.html.erb: 3: in _app_views_students__student_details_html_erb__2485891544130782916_2214680440'
app/views/students/check_unique_id.js.erb:2:in
_app_views_students_check_unique_id_js_erb__3504800328150418937_2214933160 '
Что означает, что "s" - это NIL, что я проверял всего за 2 строки до этого. У кого-нибудь есть идеи? я не знаю, имеет ли это какое-то отношение к переменной "@template", инициализированной в контроллере. Что я играл с и принимает практически все, и если напечатано ноль.
Любая помощь будет оценена. Спасибо
Конечная нота:
Я пытался реализовать это: AJAX-обновление accepts_nested_attributes_for partials