Понимание jQuery Rails Gem и rails.js - PullRequest
0 голосов
/ 22 марта 2012

Я пытаюсь решить книгу «Rails 3 в действии», где авторы использовали следующий код, чтобы добавить ссылку, которая использует ajax для создания нового поля файла.У меня возникают трудности с пониманием того, как это работает и каков эквивалентный javascript (или jQuery), который может быть функционально эквивалентен, чтобы лучше его понять:

 <%= link_to "Add another file", new_file_path,
     :remote => true,
     :update => "files",
     :position => "after"
 %>

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 22 марта 2012

Я очень запутался в этом примере, потому что он некорректен и не имеет ничего общего с Rails 3. Вместо этого авторы используют несколько странный синтаксис из link_to_remote , который больше не поддерживается в Rails 3.

Этот помощник сгенерирует ссылку ниже:

<a update="files" position="after" data-remote="true" href="/files/new">Add another file</a>

, который просто запускает AJAX GET-запрос к /files/new URL-адресу (потому что jquery-ujs наблюдает клики по ссылкам с data-remote="true" и генерирует такие запросы). Он не отправляет никаких дополнительных параметров (ни update, ни position) на сервер. Последующие манипуляции с DOM полностью зависят от ответа, который вы генерируете на сервере.

Поэтому в Rails опции 3 update и position совершенно бесполезны, если вы хотите общаться с сервером (их можно использовать в обработчике событий на стороне клиента, но об этом, как я понял, не сказано в этой книге) ).

0 голосов
/ 22 марта 2012

Ну, я не уверен, сможем ли мы объяснить это лучше, чем книга.С какой частью у вас возникли проблемы?

Ваш код будет преобразован в ссылку 'a', href для которой будет URL для new_file_path (возможно, новый метод в файловом контроллере).Вы можете проверить этот путь, вызвав этот метод в консоли rails, набрав app.new_file_path

Параметр 'remote' вызовет параметр data-remote для элемента 'a' со значением true, что означает, что он будетбыть вызовом ajax.Когда страница загрузится, rails.js найдет удаленный параметр и, в результате, свяжет событие click с вызовом ajax.

Местоположение, которое будет обновляться при возврате вызова ajax, будет элементом 'files' настраницы.

Параметр position указывает - не обновляйте элемент files напрямую - но поместите ответ в DOM сразу после этого элемента.

Если это не поможет, попробуйтеэти ресурсы:

http://guides.rubyonrails.org/ajax_on_rails.html

http://net.tutsplus.com/tutorials/javascript-ajax/using-unobtrusive-javascript-and-ajax-with-rails-3/

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