Я думаю, что вы смешиваете 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, либо как вы сказали, на самой странице, а затем включите / выключите ее.