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 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
<%= 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;
});
});
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.