J'ai commencé à jouer avec Rails 3 beta et j'essaie de faire mon habituel projet de démarrage. Je crée une liste simple de projets, mais utilise des requêtes ajax pour la navigation de l'application. Dans Rails 3, mon code habituelle ne fonctionne pas pour l'échafaud de base, je reçois unRuby on Rails 3 Beta: Sur une requête ajax, je ne peux pas répondre à la vue html.erb. Y at-il un travail autour?
ActionView:MissingTemplate (Missing template projects/new with {:format=>[:js]}
Voici mon un snippit de mon contrôleur de projets:
# GET /projects/new
# GET /projects/new.xml
def new
@project = Project.new
respond_to do |format|
format.html # new.html.erb
format.js { render :layout => false }
format.xml { render :xml => @project }
end
end
Notez la ligne de format.js. J'utilise la bibliothèque Mootools pour mon javascript et je n'ai pas encore essayé les nouveaux hooks unobtursive que fournit le rail 3, donc je l'écris toujours à la main. Voici la requête javascript qui se déclenche lorsque le 'nouveau' lien est cliqué sur la page. Dans Mootools, les attributs de mise à jour Request.HTML mettent à jour le div que j'ai dans le code HTML avec l'ID 'main'.
a.addEvents({
'click': function(e) {
e.stop();
console.log("Click for '" + a.get('href') + "'");
new Request.HTML({
url: a.get('href'),
method: 'get',
update: 'main',
onRequest: function() {},
onSuccess: function() {},
onFailure: function(xhr) {},
onComplete: function() {}
}).send();
}
});
Alors ce qui se passe lorsque le lien est cliqué, est le contrôleur tente de répondre à l'appel js avec le fichier new.js.erb, que je n'ai pas. Dans les versions précédentes de rails, ce ne serait pas le cas et il répondrait automatiquement avec le fichier new.html.erb. Si je supprime la ligne format.js dans le contrôleur, elle répond en retour, mais je ne veux pas que la réponse soit mise en page lorsqu'elle est appelée via javascript.
Y a-t-il quelque chose qui a changé dans Rails 3 beta?