我試圖在給定某個AJAX請求的情況下創建表單元素。將ActionView :: Helpers :: FormBuilder傳遞給部分
這是我的設置:
查看:
<%= 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:
應用程序/視圖/學生/ _student_details.html.erb:3:_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
感謝亞歷山大,我知道這可行,但我的功能將大大受益,如果我可以用FormBuilder建議的方式做到這一點。 – jalagrange
這是Rails 2.3還是3+?不知道在Rails 3中是否存在@template變量。使用您提到的AJAX更新後,自從發佈該方法以來,我更改了代碼。最後,我使用了http://media.pragprog.com/titles/fr_arr/multiple_models_one_form.pdf的修改版本,而不是抓取現有索引並增加它(它很容易打破,特別是如果我想擴展嵌套到另一個層面)。 – Pasted
你好,這是rails 3.1。感謝您的意見和鏈接。我試圖用view_context而不是@template來實現你的解決方案,它以下面的方式破壞:NameError:未定義的局部變量或方法'view_context'for main:Object – jalagrange