In primo luogo è necessario fare attenzione che il campo di input per vedere se è cambiato. Quindi, supponendo che:
- il selettore bagagli ha un id di 'stoccaggio'
- il selettore di archiviazione ha l'id del 'stoccaggio' come valore
... si potrebbe mettere questo nel file di storage.coffee.js
:
jQuery ->
$('select#storage').change ->
storage_id = $('option:selected',this).val()
$.get 'storages/' +storage_id+ '/orders.js'
Poi, partendo dal presupposto che gli ordini sono annidate in custodia, se il vostro OrdersController si presenta in questo modo:
OrdersController < ApplicationController
def index
@storage = Storage.find(params[:storage_id])
@orders = @storage.orders
end
end
... e se si dispone di un parziale app/views/orders/_order.html.erb
...
... e se si dispone di un div#orders
sulla tua pagina che si desidera che gli ordini è sceso in ...
.. .poi si dovrebbe essere in grado di creare un file app/views/orders/index.js.erb
in questo modo:
$('div#orders').html('<%= escape_javascript(render @orders) %>');
Questo dovrebbe rendere una copia del parziale per ogni istanza degli ordini che appartengono ad un dato di stoccaggio e aggiungerlo al DOM dopo il selettore di memoria.
Che cosa sta succedendo è: quando il menu di selezione viene modificato, genera una richiesta jET GET all'indice degli ordini per l'archiviazione specificata. Quindi tale richiesta tenterà automaticamente di pubblicare una pagina index.js, con le variabili di istanza impostate nel controller disponibili per quella vista. Il js in quella vista verrà eseguito dopo che è stato inserito qualsiasi ruby interpolato, quindi è possibile utilizzare le funzioni rails (come render @orders
) e quindi l'output di quelli viene iniettato nella dom tramite $('div#orders').html('your rendered orders will be inserted in here by rails')
.
Chiaramente dovrai modificarlo per adattarlo alla tua pagina, sto solo supponendo su quali elementi della tua pagina vengono chiamati ecc., Ma questo concetto di base dovrebbe funzionare correttamente. Fatemi sapere se avete domande.
Grazie per la vostra risposta ho usato i binari 2.3.5 e il prototipo e ho seguito il concetto. –