Я пытаюсь ладить с Rails 3 и некоторой Ajaxification моего приложения с помощью jQuery.Поэтому, когда пользователь пишет комментарий, он должен быть вставлен через Ajax после нажатия кнопки отправки.
Проблема: Ответ Ajax содержит полный сгенерированный HTML-файл моего application.haml.Я понятия не имею, как избавиться от этого HTML и получить только предполагаемый ответ, записанный в соответствующем файле create.js.erb.
Вот мой контроллер комментариев:
class CommentsController < ApplicationController
def new
@comment = Comment.new
end
def create
@article = Article.find(params[:article_id])
@comment = current_user.comments.build(params[:comment])
@comment.article_id = @article.id
respond_to do |format|
if @comment.save
format.html
format.js
else
format.html
format.js
end
end
end
end
Форма (в HAML) для комментариев выглядит следующим образом:
#article_write_comment
%h2 Write a comment
#article_write_comment_form
%p Comments are limited to 1000 chars.
= form_for([@article, @article.comments.build], :remote => true) do |f|
.field
= f.text_area :body, :rows => 10, :cols => 50
.actions
= f.submit "Submit"
Мой файл create.js.erb размещен в представлениях / комментариях:
$('#article_comments').append('<%= escape_javascript(render(@comment)) %>');
Комментарий частично (views / comments / _comment.haml), который должен быть добавлен, выглядит следующим образом:
.comment
= gravatar_for comment.user, :size => 48
%p
%b
= comment.user.name
said:
= time_ago_in_words(comment.created_at)
ago
%p
= simple_format(comment.body)
Наконец, отправленное сообщение ajax после нажатия на кнопку отправки:
authenticity_token e2rvcKyjPEx8f31U2vemxCGMfVJzxvqTO+03OCAsNkw=
comment[body] Test Test Test
commit Submit
utf8 ✓
Но вместо этоготакой ответ:
$('#article_comments').append('<%= escape_javascript(render(@comment)) %>');
Я получаю такой ответ с html-кодом сайта: (Сокращено содержание div'ов для меньшего отвлечения)
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id='content'>
<div id='header'>
</div>
<div id='container'>
$('#article_comments').append('<div class=\'comment\'>\n <img alt=\"Alex Gieche\" class=\"gravatar\" src=\"http://gravatar.com/avatar/66d7f7aefd1f45ea810cb3f524cc1780?size=48\" />\n <p>\n <b>\n Alex Gieche\n said:\n <\/b>\n less than a minute\n ago\n <\/p>\n <p>\n <p>Test Test Test<\/p>\n <\/p>\n<\/div>\n');
</div>
<div id='sidebar'>
</div>
<div id='footer'>
</div>
</div>
</body>
</html>
Theкомментарий не добавляется в div (но записывается в базу данных).Итак, как я могу это исправить?Спасибо за внимание!