Tôi đang khinh miệt để tạo các phần tử biểu mẫu theo một yêu cầu AJAX nhất định.Truyền ActionView :: Người trợ giúp :: FormBuilder đến một phần
Đây là thiết lập của tôi:
Xem:
<%= link_to 'Next', check_unique_id_students_path, :remote => true %>
<div id="guardian_student_details"></div>
Bộ điều khiển:
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 }) %>");
từng phần:
<% puts s.text_field :first_name %>
<% puts s.field_helpers %>
Đối với mục đích gỡ lỗi tôi đặt những dòng sau vào đầu rất của một phần của tôi:
<% puts s.class.to_s %>
<% puts s.object.to_s %>
này in ra:
ActionView::Helpers::FormBuilder
Student
này nên làm việc. Tuy nhiên Rails là đưa ra các lỗi sau:
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/sinh viên/_student_details.html.erb: 3: trong _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'
nào ngụ ý rằng "s" là NIL một cái gì đó tôi xác nhận chỉ 2 dòng trước. Không ai có bất kỳ ý tưởng? tôi không biết nếu điều này có cái gì để làm với biến "@template" khởi tạo trong bộ điều khiển. Mà tôi chơi xung quanh với và chấp nhận thực tế bất cứ điều gì và nếu in là nil. Mọi trợ giúp sẽ được đánh giá cao. Cảm ơn
Cuối cùng lưu ý:
Tôi cố gắng để thực hiện điều này: AJAX update of accepts_nested_attributes_for partials
Cảm ơn Alexandre, tôi biết điều này có hiệu quả, nhưng chức năng của tôi sẽ rất có lợi nếu tôi có thể làm theo cách được đề xuất với Trình tạo biểu mẫu. – jalagrange
Đây có phải là trong Rails 2.3 hoặc 3+ không? Không chắc chắn nếu biến @template tồn tại trong Rails 3. Với bài viết cập nhật AJAX bạn đã đề cập đến tôi đã thay đổi mã kể từ khi tôi đăng phương thức đó. Cuối cùng, tôi đã sử dụng phiên bản sửa đổi của http://media.pragprog.com/titles/fr_arr/multiple_models_one_form.pdf thay vì lấy chỉ mục hiện có và tăng nó (nó dễ bị phá vỡ đặc biệt nếu tôi muốn mở rộng lồng vào Mức độ khác). – Pasted
Xin chào dán, đây là đường ray 3.1. Cảm ơn bạn đã bình luận và liên kết của bạn. Tôi đã thử thực hiện giải pháp của bạn bằng cách sử dụng view_context thay vì @template và nó phá vỡ theo cách sau: NameError: undefined local variable hoặc method 'view_context 'cho main: Object – jalagrange