выполнение удаленного => истинного вызова с помощью javascript

Есть ли способ иметь такое же поведение, как link_to ... remote=> true с javascript?

может и не надо -

У меня есть div с именем пользователя и изображением в нем.

Я хочу, чтобы весь div реагировал на щелчок и переходил к методу (например, users#show), как если бы это была ссылка_to.

Проблема с link_to заключается в том, что он создает a href, делая текст доступным для ссылок и т. д.

Кроме того, я не могу использовать его, чтобы сделать кликабельным весь div, только текст.

В попытке объяснить себя больше -

Если link_to соответствует window.location в javascript

что такое link_to с :remote=>true в javascript?


person Nick Ginanto    schedule 24.01.2013    source источник


Ответы (3)


Вот как вы это делаете:

$.rails.handleRemote($('<a>', { href: '/path', 'data-method': 'GET' }));

person marano    schedule 07.01.2016

Я не совсем знаком с Rails, но после прочтения описания метода создается впечатление, что вы просто выполняете ajax-вызов. Забавно, насколько Rails абстрагирует эту концепцию.

Если вы используете такую ​​библиотеку, как jQuery, сделать ajax-вызов по клику очень просто:

$('element').click(function(e){
  $.get('url', function action(){
    // Do stuff
  });
});
person THEtheChad    schedule 24.01.2013
comment
$.get идентичен :remote=›true с GET? - person Nick Ginanto; 24.01.2013
comment
Нет. Я не думаю, что он понимает, что remote=true делает с рельсами. - person Ultimater; 24.01.2013
comment
Как я уже сказал, я не знаю, что делает link_to, что означает, что я не полностью понимаю вопрос, но я гарантирую вам, что если бы я знал, чего вы пытаетесь достичь, у меня было бы решение. - person THEtheChad; 24.01.2013
comment
:remote=›true — это позволит ненавязчивому драйверу JavaScript сделать Ajax-запрос к рассматриваемому URL-адресу вместо перехода по ссылке. Каждый драйвер предоставляет механизмы для прослушивания завершения запроса Ajax и выполнения операций JavaScript после их завершения. На основе этого описания он делает запрос к URL-адресу, а затем выполняет действие. Поскольку событие click в div ничего не делает, вы не будете перенаправлены. Если вы используете это в ссылке, вы должны добавить e.preventDefault(). - person THEtheChad; 24.01.2013
comment
Он использует библиотеку jquery-ujs, которая взаимодействует с Rails: github. com/rails/jquery-ujs/blob/master/src/rails.js обратите внимание на селектор a[data-remote]. - person Ultimater; 24.01.2013
comment
Попался! Спасибо за разъяснения. У меня нет желания изучать внутреннюю работу этой библиотеки. Удачи, сэр! Я надеюсь, что вы найдете свой ответ. - person THEtheChad; 25.01.2013

Чтобы DIV работал с remote=>true, после тщательной проверки jquery-ujs, казалось бы, вы можете обернуть DIV, который вы хотите щелкнуть, вокруг FORM следующим образом:

<form action="/users" method="POST" data-remote="true">
   <div onclick="$(this.parentNode).trigger('submit.rails');">Remote Request</div>
    <input type="submit" style="display:none" />
</form>
person Ultimater    schedule 24.01.2013