Rails 3, обработка ответа ajax - PullRequest
1 голос
/ 14 января 2012

Используя Ruby on Rails 3, у меня есть страница со списком комментариев, и я хочу показать форму с использованием ajax всякий раз, когда пользователь нажимает кнопку reply комментария.

Пока что у меня есть частичная часть под названием _form_comment.html.erb с html для формы. С этим проблем нет.

В представлении это код для ответа кнопок:

link_to "Reply", {:controller => "catalog", :action => "form_comment", :id => c.id}, :remote => true, :class => "btn_reply_comment"

В контроллере я добавил это действие, которое возвращает частичное всякий раз, когда нажимается кнопка reply :

def form_comment
    if request.xhr?
        render:partial => "form_comment"
    end
end

И, чтобы «сделать что-то» с ответом, у меня есть этот сценарий

$(document).ready(function(){
    $(".btn_reply_comment")
        .bind("ajax:success", 
              function() { alert("Ajax response"); });
});

Когда я нажимаю кнопку ответить , я могу проверить, используя Firebug, что запрос ajax возвращает код 304 not modified. Я читал некоторые другие темы, в которых говорилось, что я должен отключить кеш в запросе ajax, но, поскольку я не использую $.ajax... вручную, я не знаю, как это изменить.

Что я могу сделать?

1 Ответ

1 голос
/ 14 января 2012

Я думаю, что вы должны привязать событие «ajax: success» к форме, созданной помощником link_to, а не к элементу ссылки «a».

, поэтому попробуйте связать с:

".btn_reply_comment form"

В любом случае, я предлагаю использовать обычный элемент link_to или "a" и некоторый код jquery для выполнения запроса ajax и обработки обратного вызова, например:

$(".btn_reply_comment").on("click", function(){
   $.get($(this).attr("href"), function(data){
     eval(data)
   })
})

ps: "on" требует jquery> = 1.7, если у вас его нет, используйте "bind"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...