рельсы рендеринга всех действий через AJAX - есть ли простой способ? - PullRequest
4 голосов
/ 18 июля 2011

Я бы хотел, чтобы рельсы выполняли действия через AJAX.Я читал о response_to и js.erb.Но мне действительно не хочется проходить каждый link_to и добавлять :remote => true

Но моя главная задача - создание почти идентичных файлов js.erb .

Есть ли рельсовый способ сделать сайт AJAXful?Может быть, что-то вроде Legited_resources?

Ответы [ 3 ]

2 голосов
/ 19 июля 2011

Мне удалось преобразовать все мои ссылки в AJAX с помощью jquery без необходимости редактировать одну. Я добавил следующее в мой $ (document) .ready

// Ajax navigation
$('a').live('click', function(e) { 
  e.preventDefault();
  link = $(this); 
  target = link.attr('target')
  $('#'+target).load(link.attr('href'), function() {});
});

Я активно использую его в своем плагине jquery для ярлыков https://github.com/map7/jquery.beeline

0 голосов
/ 18 июля 2011

Бит: remote => true в ссылке добавляет атрибут data-remote к результирующей ссылке HTML.

Затем есть драйвер rails ujs, который незаметно выбирает его с помощью соответствующего селектора и добавляет необходимыезаголовки, позволяющие Rails (ActionPack) понять, что это запрос AJAX.

Одним из решений может быть установка, в зависимости от драйвера, всех ссылок на AJAX (не уверен, если вы хотите это сделать) через Javascriptили переопределение / расширение / создание другого вспомогательного метода с установленным параметром: remote => true.

Что-то в этих строках:

def ajax_link_to(url, label)
    link_to label, url, :remote => true
end

Разверните, чтобы включить опции html и т. д. по желанию

Или с alias_method_chain (не проверено):

def link_to_with_ajax(title, args = {})
  link_to_without_ajax(title, args.merge(:remote => true))
end
alias_method_chain :link_to, :ajax
0 голосов
/ 18 июля 2011

Вы можете установить тип формата по умолчанию JSON, а затем просто вызвать действия вашего контроллера как ajax. Вот вопрос, который говорит , как установить тип формата по умолчанию . Кажется, вы должны сделать это для каждого ресурса. Хотя я никогда не пробовал этого ... Я использую только ajax, а не весь сайт.

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