【发布时间】:2014-06-21 23:56:37
【问题描述】:
我需要在视图中的 .js.coffee 资产文件和 .js.erb 文件中使用一组大约 40 行代码。它为我在页面上加载现有对象(资产文件中的代码)和动态创建新对象(视图中的代码)时使用的对象设置代码。
似乎我不能在资产文件中使用部分,因为它们是静态的。我试图在资产中为代码创建一个函数并在视图中调用它,但视图文件找不到该函数。 (这是因为 Coffeescript 将他们所有的代码都包装在了一个匿名函数中吗?)目前,我在两个文件上都有重复的代码,但它又湿又臭,而且通常让人不愉快。
资产代码
setUpEvent = (start, end, $event) ->
startIdx = getHeaderIndex start
$event.addClass "cell-#{startIdx}"
endIdx = getHeaderIndex end
$event.width((endIdx - startIdx) * 94)
draggableOptions =
revert: 'invalid'
helper: 'clone' # needed to work with grid
grid: [101, 101]
start: (e, ui) ->
# hide so only helper clone is visible
$(this).css 'visibility', 'hidden'
ui.helper.addClass 'dragging dragged-event'
stop: (e, ui) ->
$(this).css 'visibility', 'visible'
ui.helper.removeClass 'dragging dragged-event'
resizableOptions =
containment: 'parent'
grid: [100, 0]
handles: 'e, w'
minWidth: 94
stop: (e, ui) ->
eventId = ui.element.data 'id'
startColumn = Math.floor(ui.position.left / 100)
endColumn = Math.ceil((ui.position.left + ui.size.width) / 100)
data =
start: getColumnDate startColumn
end: getColumnDate endColumn
updateEvent ui.element.data('id'), data
$event
.draggable(draggableOptions)
.resizable(resizableOptions)
如何在资产和视图之间共享代码?
【问题讨论】:
标签: javascript ruby-on-rails coffeescript asset-pipeline