Sperando di ottenere aiuto con il modo corretto di passare i dati del controller alla vista quando si utilizzano le chiamate Ajax in Rails.
Ho una pagina in cui è presente un elenco di profili. L'utente sulla pagina può fare clic su qualsiasi profilo e visualizzare una lista dei desideri da quel profilo specifico. La chiamata viene effettuata tramite telecomando: vera nelle rotaie, quindi è una chiamata Ajax
class ProfilesController < ApplicationController
def show
@list = Profile.find(params[:id]).get_wishlist
respond_to do |format|
format.html
format.js
end
end
end
La pagina aggiornerà quindi un parziale sulla paginache visualizza gli articoli nella lista dei desideri. Non riesco a capire il modo corretto di ottenere i dati @list dal controller nel modello di visualizzazione show.js.erb. Finora, ho provato cose su questa linea per recuperare i dati nel modello di vista .js.erb
var list_data = "<%= j( @list ) %>";
Sto specificamente cercando di caricare il risultatoin un oggetto JSON all'interno del modello js.erb in modo che io possa scorrere i risultati e fare alcune altre cose. Qualsiasi aiuto molto apprezzato o che mi indica dove posso trovare la risposta.
risposte:
0 per risposta № 1Puoi usare
$("id_of_div").html("<%= escape_javascript(render("partial",list: @list)) %>");
o
$("id_of_div").html("<%= escape_javascript(render("path_to_partial",list: @list)) %>");
0 per risposta № 2
aggiungi la seguente riga al tuo file show.js.erb
$("id_of_div").html("<%= escape_javascript(render("partial",list: @list)) %>");
o
$("id_of_div").html("<%= escape_javascript(render("path_to_partial",list: @list)) %>");
0 per risposta № 3
Cosa c'è nel parziale? Potresti semplicemente sostituire completamente il parziale
<div id=partial>
<%= render "partial" %>
</div>
js.erb:
$("#partial").html("<%= j render "partial", list: @list %>");
Per il loop dovresti essere in grado di fare: Presumo che sia un numero di articoli che viene restituito
<% @list.items.each do |list_item| %>
$("#partial").append("<%= j render "list_item_partial", list_item: list_item %>");
<% end %>
Dove la voce di elenco parziale è solo il codice per visualizzare ogni voce di elenco. Ad essere onesti non ho usato molto json quindi non sarò di grande aiuto, a parte questo puoi creare il codice del tuo controller
@list = Profile.find(params[:id]).get_wishlist.to_json