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.