J'implémente une application facebook dans les rails utilisant le plugin facebooker, donc il est très important d'utiliser cette architecture si je veux mettre à jour plusieurs DOM dans ma page. si mon code fonctionne dans une application de rails réguliers, cela fonctionnerait dans mon application facebook. J'essaie d'utiliser ajax pour informer l'utilisateur que le commentaire a été envoyé, et mettre à jour le bloc de commentaires.comment utiliser ajax avec json dans ruby sur rails
migration:
class CreateComments < ActiveRecord::Migration
def self.up
create_table :comments do |t|
t.string :body
t.timestamps
end
end
def self.down
drop_table :comments
end
end
contrôleur
:
class CommentsController < ApplicationController
def index
@comments=Comment.all
end
def create
@comment=Comment.create(params[:comment])
if request.xhr?
@comments=Comment.all
render :json=>{:ids_to_update=>[:all_comments,:form_message],
:all_comments=>render_to_string(:partial=>"comments"),
:form_message=>"Your comment has been added." }
else
redirect_to comments_url
end
end
fin
Vue:
<script>
function update_count(str,message_id) {
len=str.length;
if (len < 200) {
$(message_id).innerHTML="<span style='color: green'>"+
(200-len)+" remaining</span>";
} else {
$(message_id).innerHTML="<span style='color: red'>"+
"Comment too long. Only 200 characters allowed.</span>";
}
}
function update_multiple(json) {
for(var i=0; i<json["ids_to_update"].length; i++) {
id=json["ids_to_update"][i];
$(id).innerHTML=json[id];
}
}
</script>
<div id="all_comments" >
<%= render :partial=>"comments/comments" %>
</div>
Talk some trash: <br />
<% remote_form_for Comment.new,
:url=>comments_url,
:success=>"update_multiple(request)" do |f|%>
<%= f.text_area :body,
:onchange=>"update_count(this.getValue(),'remaining');" ,
:onkeyup=>"update_count(this.getValue(),'remaining');"
%> <br />
<%= f.submit 'Post'%>
<% end %>
<p id="remaining" > </p>
<p id="form_message" > </p>
<br><br>
<br>
si je tente de faire alert (JSON) dans la première ligne de la fonction update_multiple , j'ai un [objet objet]. Si j'essaie de faire une alerte (json ["ids_to_update"] [0]) dans la première ligne de la fonction update_multiple, aucune boîte de dialogue ne s'affiche. Toutefois, le commentaire a été enregistré mais rien n'a été mis à jour.
questions:
1.how peuvent javascript et les rails savent que je traite avec des objets JSON deos ROR envoyé un format d'objet ou d'un format texte?
2.Comment puis-je voir quel est le JSON retourné? Dois-je l'analyser? Comment?
2.Comment puis-je déboguer ce problème?
3.Comment puis-je le faire fonctionner?
ne peux pas obtenir que cela fonctionne, pouvez-vous me donner un exemple? merci – fenec
que se passe-t-il lorsque vous essayez de l'analyser? –
rien n'apparaît, il semble que c'est un objet nul – fenec