/ / Aggiornamento parziale delle rotaie usando un oggetto JSON - javascript, ruby-on-rails, json, ajax, facebook

Rails aggiornamento parziale usando un oggetto JSON - javascript, ruby-on-rails, json, ajax, facebook

Sto aggiornando un parziale aggiungendo alcuni post di Facebook, che vengono recuperati usando koala gem. Questo è il codice che ho scritto. Ecco il controller del feed:

# feed_controller.rb

def index
end

def fb_feed
@fb_feed = ..
respond_to do |format|
format.js {}
end
end

Questa è la vista indice:

# index.html.haml

#feed-partial

:javascript

$(document).ready(function(){
$.ajax({ url: "/facebook_feed",
success: function(fb_feed){
console.log(fb_feed);
}});
});

File js di Facebook:

:plain
$("#feed-partial").append("#{escape_javascript(render :partial =>"facebook", :locals => { :fb_feed => @fb_feed })}");

E il percorso:

get "facebook_feed" => "feed#facebook_feed", :defaults => { :format => "js" }

Fino ad ora tutto funziona bene, ma voglio con successo ajax ottenere un oggetto JSON e non una stringa. Per questo ho apportato alcune modifiche:

# feed_controller.rb

respond_to do |format|
format.js { render :json => @fb_feed }
end

# index.html.haml

...
$.ajax({ url: "/facebook_feed",
dataType: "json",
...

Ora sto ottenendo un oggetto JSON, ma il parziale non si aggiorna. Cosa mi manca o cosa devo fare per rendere parziale l'oggetto JSON? Grazie!

risposte:

0 per risposta № 1

Se si desidera eseguire il rendering del parziale e aggiungerlo alla pagina Dovresti rispondere con il formato js su richiesta Ajax. E per impostazione predefinita è stato visualizzato% nome_azione% .js.erb (haml ecc.)

Se vuoi creare html su javascript con i dati recuperati dal controller, con { render :json => @fb_feed } avrà ragione

Se si desidera utilizzare entrambi, è necessario dichiarare 2 formati di risposta con js e json.