2010-04-05 2 views

ответ

4

Как насчет яваскрипта контроллера, как описано в этом railscast:

http://railscasts.com/episodes/88-dynamic-select-menus

Теперь, если вы хотите только создать экземпляр этого динамического значения во время выполнения, тогда вы можете кэшировать его или хранить в переменной экземпляра, в зависимости от того, откуда поступают данные.

Вы можете сохранить свой существующий javascript, сохранив его, сохранив переменную рельсов в переменной js в динамическом файле, при условии, что загрузка страницы завершена.

+0

Решение ryanb идеально подходит для меня, спасибо – denisjacquemin

7

Нет, не публично. Но вы можете создать js-файл из стандартного Rails-действия, если хотите. Я бы не рекомендовал этого, потому что смешивание бэкэнд с javascript-кодом является одним из самых быстрых способов создания неподдающегося и запутанного приложения.

Лучшим решением может быть рендеринг тега сценария в вашем макете (выше js includes) для динамического набора переменной js. Затем используйте MY_VAR, где вам это нужно, в js.

<% javascript_tag do -%> 
var MY_VAR = '<%= value_of_my_var || "defaultVal" %>'; 
<% end -%> 
+0

Хорошее решение спасибо, для меня решение ryanb 'лучше для моих нужд – denisjacquemin

+0

Да: это правильный путь. –

+0

Разве это не создало бы глобальный var? Это кажется плохой практикой с точки зрения javascript. – quoo

2

Да не делать это, вы гораздо лучше держать код статичной и используя рельсы для получения данных, в сказать форму JSON.