/ / Modo corretto di passare i dati dal controller per visualizzarli quando si utilizzano chiamate ajax in Rails - javascript, ruby-on-rails, ajax

Modo corretto per passare i dati dal controller per visualizzare quando si utilizzano le chiamate Ajax in Rails: javascript, ruby-on-rails, ajax

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 № 1

Puoi 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