Вызов функций JavaScript из контроллера - PullRequest
5 голосов
/ 16 февраля 2011

Можно ли вызвать функцию javascript из контроллера в рельсах?

Ответы [ 2 ]

13 голосов
/ 16 февраля 2011

Что я делаю, так это чтобы контроллер 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 из контроллера.

0 голосов
/ 16 февраля 2011

Нет, но вы можете вывести javascript, который будет вызываться немедленно, например,

<script type="text/javascript">
   function IWillBeCalledImmediately()
   {
      alert('called');
   };
   IWillBeCalledImmediately();
</script>

Однако было бы лучше использовать jquery и использовать событие ready.

<script type="text/javascript">
     $(function() { 
          alert('called');
      });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...