Rails 3: Передача строки из Ruby в Javascript?

Jist:

В <script type="text/javascript"> Я хочу получить доступ к статической (после того как Rails доставит страницу клиенту) статической строке из Ruby в Javascript.

Подробнее (AKA: почему я хочу это сделать.)

Я использую push-сервер под названием Juggernaut, и он должен подключаться к соответствующему "каналу", определяемому переменной в контроллере. Синтаксис Джаггернаута для "прослушивания" сервера Джаггернаут:

j.subscribe("channel", function(data) { })

Я хочу, чтобы это было:

j.subscribe(<%= @myChannel %>, function(data) { })

2 ответа

Решение

Скорее всего ваш @myChannel не содержит ".

Вы должны использовать:

j.subscribe("<%= @myChannel %>", function(data) { })

Другая идея состоит в том, чтобы не встраивать свой код ruby ​​в файлы.js, а в само представление.

Таким образом, по вашему мнению, либо установите переменную JavaScript channel или добавьте "канал" в качестве атрибута некоторого HTML-элемента, в зависимости от того, что более естественно для вашего случая. Затем в вашем приложении javascript вы можете получить доступ к этой переменной, как только документ будет готов.

Это имеет побочное преимущество: если / когда канал меняется, клиенту не нужно повторно загружать ваш javascript, но вместо этого он может продолжать использовать его из кеша, и рельсам не нужно каждый раз рендерить.js.

Другие вопросы по тегам