2013-04-16 2 views
2

Я использую Stripe, чтобы пользователи могли подписаться на мое приложение Rails 3.2. У меня есть модель Subscription, и в активе JS я вызываю объект Stripe. Но я включаю только файл javascript Stripe в специальный файл макета для процесса подписки. Он не включен в мой основной макет приложения.Можно ли условно загрузить определенные объекты JS в трубопроводе?

Так что, конечно, я получаю сообщение об ошибке, если в основной шаблон макета приложения не включен файл Stripe JS, потому что subscription.js.coffee ссылается на Stripe.

Есть ли способ НЕ загружать ресурс подписки, за исключением специального шаблона подписки, который я настроил?

ответ

5

Да, возможно, у вас есть файл require_tree в файле манифеста application.js.

Это означает, что все ваши файлы coffeescript, включая subscriptions.js.coffee, включены в ваш application.js.

Далее вы, вероятно, есть линия, подобный этому в макете:

<%= javascript_include_tag 'application' %> 

Это означает, что ваше приложение файл манифеста (включая код subscription.js.coffee) включен в макете.

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

Так что в вашем application.js файл манифеста вместо использования require_tree, вы могли бы сделать что-то вроде этого:

//= require jquery 
//= require jquery_ujs 
//= require posts 
//= require comments 

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

//= require_jquery 
//= require jquery_ujs 
//= require subscriptions 

Обратите внимание, что posts и comments являются примерами.

+0

Спасибо Arjan. Я никогда не думал иметь отдельный файл манифеста для другого макета. Это был ментальный блок, который вы теперь удалили. – AKWF

Смежные вопросы