Как мне получить файл application.js (jQuery) для выполнения скрипта из другого места в моем приложении Rails? - PullRequest
1 голос
/ 14 сентября 2010

Я начинаю чувствовать себя сумасшедшим, потому что то, что я хочу сделать, очень просто: напишите строку javascript в моем файле Rails application.js, которая приведет к выполнению скрипта где-то еще в приложении. Я пробовал это с jQuery.get () и jQuery.getScript (), но, похоже, ничего не работает.

Вот пример кода из моего файла application.js:

#application.js
$(document).ready(function() {
  $(".button").click.function(){
    $.get($(this).attr("href"), null, null, "script");
  });
});

или

#application.js, excerpt
  $.getScript("index.js.erb", function(){
    alert('script has run');
  });

среди других вариаций. Я попытался поместить файл index.js.erb в ту же папку представлений, что и моя текущая страница, или в папку javascripts, и даже попытался сделать его чистым файлом .js. Сам сценарий не может быть проблемой, я пробую его такими строчками, как:

#app/views/index.js.erb)
$('.header').text('new text')

Ничто не работает для меня, пожалуйста, помогите!

Ответы [ 4 ]

1 голос
/ 14 сентября 2010

Похоже, у вас есть дополнительная цитата перед "href".

Также, вы можете попробовать добавить расширение .js после href: ... attr ("href") + '.js', ...

0 голосов
/ 14 сентября 2010

Нужно положить в:

$(function(){
 // your code goes here
});

блок

0 голосов
/ 14 сентября 2010

Ваш веб-сервер будет обслуживать любые файлы *.js, расположенные в каталоге public/. Он не будет обслуживать статические файлы, отсутствующие в public/, и не будет обслуживать любые файлы *.erb, даже если они находятся в public/. Более того, каталог public/ предназначен только для статических файлов, и веб-сервер не будет запускать любые *.js, расположенные в public/ через Erubis.

Вместо этого вам нужен отдельный контроллер / действие маршрута и маршрут для вашего специального файла JavaScript ERB, а файл JavaScript ERB должен находиться в app/views/.

0 голосов
/ 14 сентября 2010

Вот что я хотел бы проверить, чтобы начать:

  • Любые ошибки в firebug?
  • Проверьте источник вашей страницы, включает ли он jQuery?
  • Что если вы просто напишите предупреждение в application.js, это сработает?
  • Вы уверены, что у вас есть код, который вы отправили в $(document).ready(...) обратном вызове?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...