Rails, файлы jQuery, .js.erb, JS не выполняется браузером - PullRequest
10 голосов
/ 07 января 2010

Я пытаюсь использовать jQuery, и все было замечательно, до сих пор, когда я пытаюсь визуализировать частичное и добавить его в div.Вот как я это настроил:

У меня есть действие, которое реагирует на js:

def index
  @objects = Object.find(:all)

  respond_to do |format|
    format.js
  end
end

И шаблон index.js.erb с небольшим количеством JavaScript в нем:

alert("hello world");

Firebug возвращает ответ «text / javascript», содержащий:

alert("hello world");

Но окно оповещения не появляется, и никакой другой JavaScript не работает.Я проверил http://railscasts.com/episodes/136-jquery И я более или менее следую.Я пробовал несколько других вещей, таких как использование .rjs вместо .erb и добавление этого в мой шаблон:

page.alert("hello world"); 

, но я получаю тот же самый точный результат, и браузер никогда не выполняет JS.1018 * Кто-нибудь знает, почему JavaScript не выполняется?

Я использую Rails 2.3.4.

1 Ответ

12 голосов
/ 07 января 2010

Вы должны вызывать его с вашей точки зрения, иначе он никогда не будет выполнен.

пример контроллера:

def index
  @objects = Object.find(:all)

  respond_to do |format|
    format.js{
      render :text => "alert('hello')"
    }
  end
end

и index.html.erb с:

<script type="text/javascript">
  $(function(){
    $.ajax({ url: '/controller', type: 'get', dataType:'script' });
  });
</script>

замените '/ controller' на фактический URL, который выполняет индексное действие этого контроллера, по умолчанию для PostsController это будет '/ posts' и т. Д. ...

Если вам нравится rjs, вы удаляете {} и все, что в нем, в контроллере и создаете index.js.erb или index.rjs с:

page.alert("hello world")

или

page << "hello world"
...