jQuery + Ajax + Haml. js.les fichiers erb ne fonctionnent pas

Après avoir lu sur quelques expériences, je sens que cette question pourrait être discuté à nouveau. Codant dans Rails3, j'essaye d'implémenter quelques effets Ajax lisses quand un utilisateur essaye de créer un poste sur un autre élément de mon application. Voici le code qui m'intéresse:

app/views/posts/new.HTML.haml

- form_for @post, :remote=>true do |f|
    = f.text_area :content
    = submit_tag "Post"

app/controllers/post_controller.rb

def create
  @comment = Post.new(params[:post])
  @comment.save
end

app/views/posts/create.js.erb:

alert("ajax worked!");

j'ai suivi ce que j'ai vu sur le UJS Railscast , mais rien ne semble tirer. Non seulement ça, mais firebug ne me donne aucune preuve descriptive de ce qui se passe. Il me dit qu'il a fait le nouvel objet post sur la soumission, mais rien de plus.

des idées?

3
demandé sur Bill the Lizard 2010-08-05 10:53:27

3 réponses

j'ai trouvé la réponse! Le problème était que lorsque le contrôleur rendait la vue, il incluait la mise en page globale de mon application; la mise en page cédait à l'action de rendu, donc mon code javascript contenu à l'intérieur de my .js.le dossier de l'erb a été recraché dans ma demande.rhtml. J'ai corrigé ce problème en incluant ceci à l'intérieur de mon action de contrôleur pour afficher mes messages:

respond_to do |format|
  format.js {render :layout=>false}
end
9
répondu kelly.dunn 2011-06-25 01:18:32

Regarder un Railscast

<%= form_tag products_path, :method => 'get', :id => ↵  
  "products_search" do %>  
  <%= hidden_field_tag :direction, params[:direction] %>  
  <%= hidden_field_tag :sort, params[:sort] %>  
  <p>  
    <%= text_field_tag :search, params[:search] %>  
    <%= submit_tag "Search", :name => nil %>  
  </p>  
<% end %>

et dans Js

// Search form.  
  $('#products_search').submit(function () {  
    $.get(this.action, $(this).serialize(), null, 'script');  
    return false;  
  });  
});
0
répondu AlexParamonov 2011-02-08 22:33:04

lorsque ma mise en page a été codée dans Haml (application.haml), AJAX ne tirerait pas et le code de secours kelly.dunn mentionné ne fonctionne pas.

respond_to do |format|
  format.js {render :layout=>false}
end

la solution la plus simple était de convertir la disposition de l'application en .HTML.format erb.

0
répondu nslocum 2011-08-21 22:58:27