2010-01-19 3 views
0

Когда вы звоните: javascript_include_tag :defaults вы обычно получаете: prototype.js, effects.js, dragdrop.js и controls.js.Как мне изменить JAVASCRIPT_DEFAULT_SOURCES для моего приложения?

Они хранятся в константе в ActionView::Helpers::AssetTagHelper под названием «JAVASCRIPT_DEFAULT_SOURCES». В моем приложении используется jQuery, поэтому я хочу заменить ссылки Prototype на что-то более полезное.

Я добавил инициализатор с этими линиями, на основе исходного кода из jRails:

ActionView::Helpers::AssetTagHelper::JAVASCRIPT_DEFAULT_SOURCES = %w{ jquery-1.4.min jquery-ui jquery.cookie } 
ActionView::Helpers::AssetTagHelper::reset_javascript_include_default 

Но когда я делаю это, я получаю: warning: already initialized constant JAVASCRIPT_DEFAULT_SOURCES во время запуска.

Каков правильный способ изменения этого значения? В исходном коде он проверяет константу перед ее настройкой, но, по-видимому, это происходит до запуска сценариев инициализации.


Рельсы версии 3.0 обеспечит гораздо большую гибкость при выборе библиотек JS, так что я думаю, что это проблема с датой истечения срока.

ответ

0

Почему бы просто не сделать что-то подобное?

<%= javascript_include_tag "jquery-1.4.min", "jquery-ui", "jquery.cookie" %> 

Вам не нужно использовать опцию ": defaults". Взять хотя взглянуть на:

http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html#M001713

+0

Конечно, я уже это делаю. Я пытаюсь понять, как использовать ': defaults' просто потому, что я _want_. Нет причин, по которым веб-инфраструктура должна быть настолько тесно связана с инфраструктурой javascript. –

0

Согласно this thread на рубинового форуме, вы не можете. Хотя, если посмотреть here, есть несколько .diff файлы, которые вы могли бы захватить, что, по крайней мере, позволит вам сделать что-то вроде этого:

# environment.rb 
ActionView::Helpers::AssetTagHelper::register_javascript_expansion :monkey, "head", "body", "tail" 
ActionView::Helpers::AssetTagHelper::register_stylesheet_expansion :monkey, "head", "body", "tail" 

# your .erb/.haml files 
javascript_include_tag :monkey 
stylesheet_link_tag :monkey 

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

+0

Да, я видел это, хотя никогда не было четкой резолюции по вопросу, поэтому я спросил его здесь. Жесткое кодирование этого материала - такой плохой дизайн. Я не могу поверить, что они не обеспечивают простой способ его изменить. –

+0

Согласовано. Одна из первых вещей, которые я делаю в любом новом проекте рельсов, - это своп всего прототипа для jquery. – jerhinesmith