2009-12-17 22 views
5

tôi có hộp chọn nơi thay đổi tôi cần lấy giá trị và thông qua chức năng từ xa lấy một số tên trường từ db và sau đó tạo ra những trường tiếp tục xuống dưới dạng depwning trên whatoption từ hộp chọn được chọn.trình tạo biểu mẫu vượt qua trong remote_function trong đường ray?

Vấn đề là các trường nằm trong f.form_for vì vậy đang sử dụng trình tạo mẫu f có hộp chọn. Vì vậy, khi tôi hiển thị phần qua ajax trong bộ điều khiển, tôi nhận được lỗi khi tôi không có tham chiếu đến trình tạo biểu mẫu cục bộ f.

có ai biết làm cách nào hoặc liệu tôi có thể tham chiếu đến trình tạo biểu mẫu hoặc có thể chuyển nó vào cuộc gọi chức năng từ xa và sau đó chuyển vào người dân địa phương của tôi một phần không?

cảm ơn rất nhiều, mọi trợ giúp sẽ tuyệt vời như bị kẹt trong thời gian dài này!

cổ vũ rick

Trả lời

7

Tôi chỉ đơn giản là sẽ viết lại một phần của bạn không sử dụng f. người trợ giúp biểu mẫu.

Đỗ:

<%= text_field :object_name, :method_name %> 

Thay vì:

<%= f.text_field :method_name %> 
+0

Điều này đã trả lời câu hỏi của tôi ở đây: http://stackoverflow.com/questions/8821613/rails-lookup-table-with-dynamic-nested-forms – Karl

+0

Chào Karl, Câu hỏi bạn đã liên kết bị thiếu. Bạn có thể nhớ nó là gì không? Tôi có chung vấn đề đó. Cảm ơn! –

18

tôi đã cùng một vấn đề và giải pháp của tôi là tạo ra một người xây dựng hình thức cho cùng một đối tượng và để vượt qua nó sang partials.

remote_action.js.erb:

'<%= form_for(@object) do |ff| %>' 
    $('#some_div').html("<%= j render(partial: 'some_partial', locals: {f: ff}) %>" 
'<% end %>' 

Điều quan trọng là thẻ form_for có dấu nháy đơn hoặc nếu không sẽ có vấn đề javascript_escape.

+0

Tuyệt vời, công trình. Nó thiếu dấu ngoặc đóng trên phần render và tôi phải loại bỏ dấu "/" trong dòng một. –

+0

Điều này làm việc cho tôi một khi tôi nhận ra rằng bởi "@object" bạn đề cập đến một số biến dụ trong bộ điều khiển của bạn (một trong đó là viện dẫn cho AJAX) ... mà trong trường hợp của tôi là @property (vv ...) này: vcavanna

+0

Hey, xin lỗi nếu tôi không đủ rõ ràng ... –

0

Đoạn mã này không phù hợp với nhận xét cho câu trả lời khác ... nó minh họa trường hợp một phần dành cho mô hình lồng nhau và được tham chiếu trong phương thức/hành động từ xa. Nó cũng cho thấy việc giải thích nghĩa đen của tôi về @object không chính xác:

'<%= form_for([@property.agency,@property]) do |parent_form| %> ' '<%= parent_form.fields_for :address do |f| %>' $('#property_addresses').append("<%= j render(partial: 'common_partials/address', locals: {parent_form: f}) %>") '<% end %>' '<% end %>'

Lưu ý, rằng đây là một @property, lồng dưới @ property.agency: nơi chúng tôi có một fields_for lồng dưới form_for.

2

tôi đang làm một cái gì đó tương tự như những gì Uri Klar gợi ý, nhưng mà không đi qua các yếu tố hình thức như chuỗi lại cho khách hàng, vì họ không cần thiết:

# create a form helper 'f' and store it in the variable form_helper. 

<% form_helper = nil %> 
<% form_for @object, url: '' do |f| %> 
<% form_helper = f %> 
<% end %> 

# pass form_helper to the form partial 

$('#element').html('<%= j render "form_element", f: form_helper %>'); 

ý rằng form_helper = nil trên dòng đầu tiên được ở đó để đặt phạm vi của biến nằm ngoài phạm vi của khối của biểu mẫu.

Tôi nghĩ đây là một cách tiếp cận tốt hơn bởi vì nó không cho khách hàng thấy bất kỳ hoạt động bên trong nào của chúng tôi, mà là giữ chúng ở phía máy chủ.

Các vấn đề liên quan