ближайший ajax не затрагивается в ruby ​​on rails

Здравствуйте, я новичок в ruby ​​on rails. И я пытаюсь сделать ajax на своем демонстрационном веб-сайте. Выполняется удаление, но мне приходится каждый раз обновлять.

view/shared/_feed_item.html.haml

%li{id: feed_item.id}
= image_tag current_user.image_url(:small_thumb).to_s
%span.user
%span.destination
%b Source:
= feed_item.source
%span.destination
%b Destination:
= feed_item.destination
%span.destination
%b Date:
= feed_item.date
%span.timestamp
%b Time:
= feed_item.time
%span.content
%b Comment:
= feed_item.content
%span.timestamp
- if current_user == feed_item.user
= link_to "Delete", feed_item ,method: :delete, data: { confirm: "You sure?" }, title:  "Delete", remote: true, class: "delete_post"

Просмотр/requests/delete.js.haml

$(document).ready(function(){
  $(function(){
    $('.delete_post').bind('ajax:success',function() {
      $(this).closest('li').fadeOut();
    });
  });
});

controller/requests_controller.rb

def destroy
 @request.destroy
 respond_to do |format|
   format.html { redirect_to root_url, notice: "Post deleted" }
   format.js { render nothing: true}
 end
end

необработанная HTML-ссылка

ссылка

Заранее спасибо.


person Ajay Barot    schedule 22.04.2014    source источник
comment
Каков ваш актуальный вопрос? Каково желаемое поведение и каково наблюдаемое поведение вашего текущего кода?   -  person jfriend00    schedule 23.04.2014
comment
Я хочу, чтобы сообщение исчезло без обновления (через ajax). поэтому текущий код показывает успешное удаление, но не через ajax.   -  person Ajay Barot    schedule 23.04.2014
comment
Больше людей смогут вам помочь, если вы покажете сгенерированный HTML (то, что видят браузер и jQuery), а не исходный код html.haml. Как сейчас, любому, кто не знает, как читать ваши файлы haml, трудно помочь вам, но эти знания не требуются, чтобы помочь вам отладить ваш jQuery, если вы просто раскрываете фактический HTML.   -  person jfriend00    schedule 23.04.2014


Ответы (3)


Причина, по которой jquery не работает. проблема в турболинках. $(document).ready(function() не работает с турболинками. подробнее см. это описание

person Ajay Barot    schedule 26.04.2014

АБПрайм,

Можете ли вы попробовать с прямым jquery следующим образом, если closest не работает?

:plain
  $(document).ready(function(){
    $('.delete_post').parent().parent().fadeOut();
  });
person Parth    schedule 24.04.2014

Я думаю, это происходит потому, что этот селектор не находит никаких элементов:

$(this).closest('li')

Функция jquery closest проходит вверх по DOM, то есть она будет смотреть на родителей, а не на братьев и сестер. Вместо этого попробуйте использовать это:

$(this).prev('li')

Вы всегда можете поместить операторы отладчика перед этой строкой, чтобы вы могли поиграть с парой различных функций jquery для $(this) и посмотреть, что работает лучше всего.

person Griffin M    schedule 22.04.2014
comment
Можете ли вы опубликовать пример того, как выглядит вывод кода haml? Исходя из этого, должно быть просто придумать работающий селектор, но я почти уверен, что селектор ничего не находит. Вы пробовали отладчик? - person Griffin M; 23.04.2014
comment
Плохо, я хотел сказать, не могли бы вы опубликовать необработанный вывод HTML, чтобы я мог увидеть, как структурирована DOM. - person Griffin M; 24.04.2014