Что я делаю, так это чтобы контроллер Rails производил действие javascript. Должен ли он вызывать частичное с включенным в него javascript.
Если вы не хотите, чтобы это активировалось при загрузке страницы, я бы настроил его через AJAX. Так что я делаю AJAX-вызов к контроллеру, который затем вызывает файл javascript.
Это видно по голосованию:
Первый AJAX
//This instantiates a function you may use several times.
jQuery.fn.submitWithAjax = function() {
this.live("click", function() {
$.ajax({type: "GET", url: $(this).attr("href"), dataType: "script"});
return false;
});
};
// Here's an example of the class that will be 'clicked'
$(".vote").submitWithAjax();
Второй контроллер
Класс $(".vote")
, по которому щелкнули, имел атрибут href, который вызывал мой контроллер.
def vote_up
respond_to do |format|
# The action 'vote' is called here.
format.js { render :action => "vote", :layout => false }
end
end
Теперь контроллер загружает файл AJAX
// this file is called vote.js.haml
== $("#post_#{@post.id}").replaceWith("#{ escape_javascript(render :partial => 'main/post_view', :locals => {:post_view => @post}) }");
Вы успешно вызвали функцию javascript из контроллера.