2015-10-10 4 views
1

Я добавляю несколько колоколов и свистов к интерфейсу моего приложения, поэтому я иду с кофейным скриптом.Rails 4 Функция кофе не работает

У меня есть контроллер с именем "Foo" и я вижу, файл под названием "foo.coffee"

JavaScripts/foo.coffee:

$(document).on "page:change", -> 
    $("#bar").click -> 
    alert "Click" 

просмотров/Foo/show.html .erb:

<%= link_to "Get Foobar!", '#', id: "bar", class: 'button' %> 

Рабочая JS в application.js:

$("#bar").on("click", function(){ 
     alert('Hey Foo!'); 
    }); 

Когда я нажимаю кнопку, нет предупреждения; ничего в консоли. Если я изменю код на чистый js, я получаю предупреждение. У меня есть coffee-rails в моем Gemfile. Что-то не хватает? Im on rails 4.2.4

+0

Показать работу JS –

+0

@SergioTulentsev Я обновил сообщение. – Sylar

+0

Эти два фрагмента не делают то же самое, понимаете? –

ответ

1

Существует несколько возможностей, которые вы можете получить может есть проблема с.

Во-первых, вы используете page:change - это turbolinks hook, который, по существу, дублера для $(document).ready(....

enter image description here

Хотя это не проблема сама по себе, я думаю, что ваше использование этого может свернуть некоторые функции в вашем приложении:

#app/assets/javascripts/foo.coffee 
foo = -> 
    $("#bar").on "click", -> 
     alert "Click" 

$(document).on "ready page:load", foo 

выше является более по правильному пути, чтобы использовать этот тип функциональности. Еще бы использовать delegation из document объекта для вашего click:

#app/assets/javascripts/foo.coffee 
$(document).on "click", "#bar", -> 
    alert "Click" 

Оба эти методы должны работать, чтобы дать вам необходимую функциональность. В частности, они будут работать с Turbolinks, чтобы гарантировать, что это не помешает работе.

-

Основная проблема у вас есть, вероятно, что foo.coffee не загружаются.

Вы должны убедиться, что вы следующий в вашем application.js:

#app/assets/javascripts/application.js 
// require_tree . 

Это удостоверится все контроллер JS вызывается, когда работает ваше приложение.

+1

У меня есть лампочки, прокомментированные, потому что я использую полосу. У меня также есть 'require_tree.'. Я попробую некоторые из событий на странице и отчитаюсь позже, но я уверен, что ваш ответ должен работать. – Sylar

+1

Если у вас Turbolinks закомментирован, используйте '$ (document) .on" click "," #bar "' и он должен работать –

+1

Пришлось вытащить мой ноутбук в магазине LOL. Работает как ветер. Благодаря!! – Sylar

Смежные вопросы