Rails 3: Передача строки из Ruby в Javascript? - PullRequest
1 голос
/ 22 сентября 2011

Jist:

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

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

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

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

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

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

Ответы [ 2 ]

4 голосов
/ 22 сентября 2011

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

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

j.subscribe("<%= @myChannel %>", function(data) { })
2 голосов
/ 22 сентября 2011

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

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

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

...