Я начал играть с Rails 3 beta, и я пытаюсь сделать свой обычный стартовый проект. Я создаю простой список проектов, но использую ajax-запросы для навигации приложения. В Rails 3 мой обычный код не работает для базового скаффолда, я получаю
ActionView:MissingTemplate (Missing template projects/new with {:format=>[:js]}
Вот мой отрывок из моего контроллера проектов:
# 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
Обратите внимание на строку format.js. Я использую библиотеку Mootools для своего javascript и еще не опробовал новые ненавязчивые хуки, которые предоставляет rails 3, поэтому я все еще пишу это вручную Вот запрос javascript, который срабатывает при нажатии на ссылку «новая» на странице. В Mootools атрибуты обновления Request.HTML обновляют мой div в HTML с идентификатором '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();
}
});
Итак, что происходит при нажатии на ссылку, контроллер пытается ответить на вызов js файлом new.js.erb, которого у меня нет. В предыдущих версиях rails это не имело место, и он автоматически отвечал бы с new.html.erb. Если я удаляю строку format.js в контроллере, он отвечает обратно, но я не хочу, чтобы у ответа был макет при вызове через javascript.
Что-то изменилось в бета-версии Rails 3?