2013-03-20 3 views
0

Je le code suivant:Pourquoi mon js.erb ne fonctionne pas

comment.js.erb

alert("Alert"); 

application.js

jQuery.ajaxSetup({ 
    'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")} 
}) 

jQuery.fn.submitWithAjax = function() { 
    this.submit(function() { 
    $.post(this.action, $(this).serialize(), null, "script");   
    return false; 
         }) 
    return this; 
}; 


$(document).ready(function() { 
    $(".comment_form").submitWithAjax(); 
}) 

Voir formulaire:

<% form_for :comment, :url => comment_task_path(tasks.id), 
         :html => {:remote => true, 
         :class => "comment_form"} do |f|-%> 
    <%= f.text_field :remark, :placeholder => "Add Comments", :rows => 2, 
        :class => 'box', 
        :style => "width: 834px; height: 40px;"%> 
    <%= f.submit "Comment"%> 
<% end -%> 

Méthode de contrôleur:

def comment  
    @comment = Comment.new(params[:comment]) 
    @comment.user_id = @current_user.id 
    @task.comments << @comment 
    flash[:notice] = "thank you" 
    if @comment.save 
    # what code do I put here to render comment.js.erb? 
    else 

    end 
end 

Quel code dois-je mettre si je veux que la méthode comment rende mon commentaire.js.erb? J'ai essayé render to et respond to, mais il ne fonctionne toujours pas.

+0

Veuillez prendre le temps de mettre correctement en retrait votre code. Vous ne montrez pas non plus de morceaux de code liés à distance. Votre formulaire est pour ': update_status', ce qui n'a rien à voir avec un' .comment_form'. – meagar

+0

désolé je l'ai mis à jour. mon erreur –

+0

Dans quel dossier est 'comment.js.erb'? 'app/views/tasks'? Quel message d'erreur obtenez-vous dans development.log? – Mischa

Répondre

0

Pas besoin de render comment.js.erb explicitement. Par défaut, le contrôleur affiche le comment.js.erb après l'exécution de cette méthode. Et probablement vous pouvez avoir le code suivant.

dans commentaire l'action

def comment 
    # ... 
    @comment.save 
end 

et dans le fichier de comment.js.erb

<% if @comment.valid? %> 
    alert("Comment created successfully"); 
<% else %> 
    alert("Something went wrong."); 
<% end %> 
+0

il répond "Modèle est manquant" mais j'ai le comment.js.erb dans le même dossier. –

+0

et encore je ne répond pas à comment.js.erb –

+0

Est-ce que ce commentaire est créé? Et pouvez-vous s'il vous plaît laissez-moi savoir quelle est l'erreur que vous obtenez exactement? –

0

Vous devez passer FORM comme argument dans le plugin.

jQuery.fn.submitWithAjax = function(elem, options, arg) { 
+0

je ne sais pas mais, j'ai inclus cela déjà dans mon application.js –

-1

Dans vos itinéraires ajouter une demande get pour aller chercher le comments.js.erb

obtenir 'votre_controller_name/comments',: as => 'comments'

Dans votre contrôleur il suffit d'utiliser comments_path

+0

Tout d'abord, c'est une demande de poste , pas une demande d'obtention. Deuxièmement, si vous lisez les commentaires, vous savez que le routage n'est pas le problème. Le commentaire est créé. – Mischa

Questions connexes