Rails, jQuery,.js.erb файлы, JS не выполняется браузером

Я пытаюсь использовать 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.

Кто-нибудь знает, почему JavaScript не выполняется?

Я запускаю Rails 2.3.4.

Ответ 1

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

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

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"