Estoy intentando crear dinámicamente elementos de formulario dada una determinada solicitud de AJAX.Pasar ActionView :: Helpers :: FormBuilder a un número parcial
Esta es mi configuración:
Ver:
<%= link_to 'Next', check_unique_id_students_path, :remote => true %>
<div id="guardian_student_details"></div>
Controlador:
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 }) %>");
parcial:
<% puts s.text_field :first_name %>
<% puts s.field_helpers %>
el objeto de depurar coloqué las siguientes líneas en el comienzo de mi parcial:
<% puts s.class.to_s %>
<% puts s.object.to_s %>
Esto muestra:
ActionView::Helpers::FormBuilder
Student
Esto debería funcionar. Sin embargo carriles está dando el siguiente error:
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/estudiantes/_student_details.html.erb: 3: _app_views_students__student_details_html_erb__2485891544130782916_2214680440' app/views/students/check_unique_id.js.erb:2:in
en _app_views_students_check_unique_id_js_erb__3504800328150418937_2214933160'
lo que implica que "s" es algo que NIL verificado sólo 2 líneas antes ¿Alguien tiene alguna idea? No sé si esto tiene algo que ver con la variable "@template" inicializada en el controlador. Con lo que jugué y acepté prácticamente cualquier cosa, y si se imprime es nulo. Cualquier ayuda sería apreciada. Gracias
Nota final:
Me trataron de poner en práctica esta: AJAX update of accepts_nested_attributes_for partials
Gracias Alexandre, sé que esto funciona, pero mi funcionalidad se beneficiaría mucho si pudiera hacerlo de la manera propuesta con FormBuilder. – jalagrange
¿Es esto en Rails 2.3 o 3+? No estoy seguro de si la variable @template existe en Rails 3. Con la publicación de actualización AJAX que mencionaste he cambiado el código desde que publiqué ese método. Al final utilicé una versión modificada de http://media.pragprog.com/titles/fr_arr/multiple_models_one_form.pdf en lugar de tomar el índice existente e incrementarlo (era propenso a romperse especialmente si quería extender el anidamiento a otro nivel). – Pasted
Hola pegado, esto es carriles 3.1. Gracias por tus comentarios y enlaces. He intentado implementar su solución usando view_context en lugar de @template y se rompe de la siguiente manera: NameError: variable local indefinida o método 'view_context 'para main: Object – jalagrange