Как я могу сделать частичное из UJS? - PullRequest
0 голосов
/ 22 ноября 2010

Могу ли я сделать частичное, связав функцию с гиперссылкой?

У меня есть гиперссылка:

Просмотреть все изображения

И у меня это есть в application.js:

$("#allimages").click(function() {
    $("#results").html("<%= escape_javascript(render 'images') %>");
});

Полагаю, что рубиновый эрб никогда не выполняется так.И этот «рендер» ничего не значит в контексте Javascript.Но я не хочу делать полный звонок на сервер, чтобы просто показать другую страницу.Есть ли способ показать частичное использование только Javascript?Кроме отображения страницы и видимых звонков вкл / выкл?

1 Ответ

3 голосов
/ 22 ноября 2010

Я думаю, что вы смешиваете application.js (чистый javascript) и возвращаете обработанные с помощью erb файлы javascript (.js.erb) из вашего контроллера.

Вместо этого вам нужно будет сделать что-то подобное (не проверено):

Установить обработчик клика для выполнения запроса ajax:

$("#allimages").click(function() {
    $.get('something/image_results');
});

В вашем SomethingController:

class SomethingController < ApplicationController

  respond_to :js, :only => [:image_results]

  def image_results
    @images = do_something
  end

end

(Обязательно добавьте маршрут для image_results и в routes.rb.)

Затем в image_results.js.erb файле:

$("#results").html("<%= escape_javascript(render 'images') %>");

Ключевым моментом здесь является то, что, поскольку вы сейчас находитесь в файле, который обрабатывается erb, вы можете использовать ruby.

Единственный способ сделать это без другого вызова - как-то визуализировать частичное отдельно и кэшировать еголибо как javascript, либо как вы сказали, на самой странице, а затем включите / выключите ее.

...