【发布时间】:2011-11-08 12:35:59
【问题描述】:
我正在尝试根据某个 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
这应该可行。但是rails给出了以下错误:
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 update of accepts_nested_attributes_for partials
【问题讨论】:
标签: ruby-on-rails forms ruby-on-rails-3.1 actionview formbuilder