Trước tiên, bạn cần xem trường nhập đó để thay đổi. Vì vậy, giả sử:
- chọn lưu trữ có id là 'lưu trữ'
- chọn lưu trữ có id của 'lưu trữ' như giá trị của nó
... bạn có thể đặt này trong storage.coffee.js
tập tin của bạn:
jQuery ->
$('select#storage').change ->
storage_id = $('option:selected',this).val()
$.get 'storages/' +storage_id+ '/orders.js'
Sau đó, giả định rằng Đơn đặt hàng được gom lại dưới lưu trữ, nếu OrdersController của bạn trông giống như vậy:
OrdersController < ApplicationController
def index
@storage = Storage.find(params[:storage_id])
@orders = @storage.orders
end
end
... và nếu bạn có một phần app/views/orders/_order.html.erb
...
... và nếu bạn có một div#orders
trên trang của bạn mà bạn muốn lệnh rơi vào ...
.. sau đó, bạn sẽ có thể tạo một file app/views/orders/index.js.erb
như vậy:
$('div#orders').html('<%= escape_javascript(render @orders) %>');
này nên làm cho một bản sao của một phần cho mỗi trường hợp các đơn hàng mà thuộc về một lưu trữ nhất định và gắn nó vào dom sau bộ chọn lưu trữ.
Điều đang xảy ra là: khi menu chọn được thay đổi, nó sẽ kích hoạt một yêu cầu GET đến chỉ mục đơn đặt hàng cho bộ nhớ đã cho. Sau đó, yêu cầu đó sẽ tự động cố gắng để phục vụ lên một trang index.js, với các biến cá thể được đặt trong bộ điều khiển có sẵn cho khung nhìn đó. Các js trong khung nhìn đó sẽ thực thi sau khi bất kỳ ruby nội suy nào được chèn vào, vì vậy bạn có thể sử dụng các hàm đường ray (như render @orders
) và sau đó đầu ra của những cái được đưa vào dom thông qua $('div#orders').html('your rendered orders will be inserted in here by rails')
.
Rõ ràng bạn sẽ phải tinh chỉnh điều này để phù hợp với trang của mình, tôi chỉ đoán được yếu tố nào của trang của bạn được gọi là v.v., nhưng khái niệm cơ bản này sẽ hoạt động tốt. Hãy cho tôi biết nếu bạn có bất kỳ câu hỏi.
Cảm ơn câu trả lời của bạn tôi đã sử dụng đường ray 2.3.5 và nguyên mẫu và tuân theo khái niệm. –