特定の 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: _app_views_students__student_details_html_erb__2485891544130782916_2214680440'
app/views/students/check_unique_id.js.erb:2:in
in_app_views_students_check_unique_id_js_erb__3504800328150418937_2214933160'
これは、「s」が2行前に確認したNILであることを意味します。誰にもアイデアはありますか?これがコントローラーで初期化された「@template」変数と関係があるかどうかはわかりません。私が遊んで、事実上何でも受け入れ、印刷された場合はゼロです。どんな助けでも大歓迎です。ありがとう
最後の注意:
私はこれを実装しようとしました:accepts_nested_attributes_for partialsのAJAX更新