0

Моя структура приложения выглядит следующим образомWich место лучше поставить мои JavaScripts в ROR

myapp 
    app/assets/javascripts/admin/admin.js 
    app/controllers/admin/admin_controller.rb 
    app/views/admin/new.html.haml 
    app/views/admin/new.js.haml 

Я использую некоторые функции AJAX для отображения конкретного содержания в моей форме. Действия, указанные в new.js.haml, который запускается, когда вызов был в формате js. У меня также есть некоторые другие скрипты в моем файле admin.js, который не включается после этого вызова ajax. Когда я копирую и вставляю скрипт в new.js.haml, все работает отлично. Но я не хочу иметь избыточные скрипты в своем приложении. Как перефразировать это?

ответ

1

Вы правы в том, что не рекомендуется дублировать код. Что касается вашего вопроса о том, где разместить файлы javascript, это не имеет большого значения (хотя, как правило, по причинам, выходящим за рамки вашего вопроса, они находятся в app/assets/javascripts).

Важно то, что функции javascript, которые вы вызываете от new.js.haml, действительно были определены, что означает, что файл javascript должен быть загружен. Это может быть сделано путем включения файла JavaScript в вашем макете, как это:

<%= javascript_include_tag "admin/admin" %> 

Определения функции в главном файла JavaScript:

// admin.js 

var testFunc = function() { 
    console.log('this is a test!') 
}; 

затем вызвать функцию в файле new.js :

// new.js 

testFunc(); 

Не нужно переопределять свои функции или переменные.

+0

Как заставить мою функциональность работать без дублирования кода? – Achaius

+0

обновленный ответ, чтобы сделать это более понятным – aguynamedloren