Прекарах много време в изходния код на sprockets и tit, опитвайки се да разбера как да предам променливи/обвързвания към контекста за оценка на Erb. Ето какво се опитвам да направя: Трябва да обслужвам JS файл, чието съдържание се променя на базата на заявка. Частите, които се променят, зависят от данните, съхранявани в DB, оттук и необходимостта от маршрутизиране на заявки през приложението Rails и необходимостта от предаване на променливи/обвързвания. Освен това JS файлът използва директивите require
за вмъкване на други JS файлове, поради което е необходимо да се използват зъбни колела.
Ето кодовия фрагмент, който не работи:
Файл на контролера:
def ever_changing_js
@foobars = Foobar.all
MyApp::Application.assets.instance_eval do
def foobars
@foobars
end
end
render :text => MyApp::Application.assets.find_asset('ever_changing.js').to_s, :content_type => "application/javascript"
end
ever_changing.js:
//= require file1.js
//= require file2.js
// Some code that uses @foobars
Как мога да направя това? Всяка помощ ще бъде оценена.