Ненавязчивый термин плохо определен, но я понимаю, что он подразумевает несколько вещей, включая прогрессивное улучшение (позволяющее небольшой доле Интернета, не использующего JavaScript, по-прежнему использовать ваше приложение) и отделение контента от функциональности (то же самое, что стили не применяется непосредственно к элементам DOM). Это означает, что если вы хотите быть по-настоящему «ненавязчивым», вы должны делать что-то похожее на то, что вы говорите.
Однако в Rails вы обычно обрабатываете обратные вызовы, используя новое представление. Ознакомьтесь с языком шаблонов RJS, который позволяет легко отображать JavaScript для выполнения на клиенте. Вот быстрый пример:
# application.js
$("#project .complete:checkbox").click(function () {
$.post('/projects/complete', {...});
})
# projects_controller.rb
def complete
@project = Project.find(...)
respond_to do |format|
format.js
end
end
# complete.js.rjs
page << "$('##{dom_id(@project)}').effect('highlight');"
Примечание : вы можете использовать большинство языков шаблонов (например, ERB), однако я обычно использую RJS для таких вещей.