Файл application.js
- это место для статического JavaScript. Он не передается в ERB для обработки каждого запроса, поэтому ваш <%= code %>
никогда не запускается. Если вы укажете свой браузер на /javascripts/application.js
, вы увидите, о чем я говорю.
Убедитесь, что вы хорошо разбираетесь в том, как обрабатываются запросы в Rails. Вы можете упустить некоторые детали здесь. application.js
- это статический файл, который существует в каталоге /public/javascripts
, поэтому он обслуживается непосредственно вашим веб-сервером; Rails даже не трогается, когда браузер выбирает его. Это похоже на то, как когда вы создаете новое приложение rails и вам нужно стереть файл /public/index.html
, прежде чем Rails сможет обработать ваш map.root
в файле rout.rb.
У вас есть несколько вариантов:
Здесь - более старый эпизод Railscast, но он кажется близким к тому, что вы ищете. Он использует контроллер с именем javascripts_controller
для генерации динамических сценариев JavaScript. Это не очень детальный подход.
В этом эпизоде метод, который Райан использует для добавления полей для вложенной модели, может быть адаптирован к вашим потребностям. Я использовал этот метод несколько раз, и он работает очень хорошо.
Рекомендуемый метод
Вы также можете вызвать действие, которое возвращает html частичного с помощью ajax и использовать результат в $(#notes).html(result)
. Быстрый поиск по rails jquery ajax
предлагает несколько советов о том, как это реализовать ( Здесь кажется разумным). Здесь - это еще один эпизод Railscast, который касается jQuery и Rails 2. Я бы не рекомендовал использовать jRails на данный момент, потому что он довольно устарел, и, как упоминалось в эпизоде, он отчасти побеждает цель перехода на jQuery как помощники Rails 2 генерируют навязчивый JavaScript.
Это гибкий способ ведения дел. У вас есть общий набор статического JavaScript, который используется для вызова удаленных методов. В отдельных методах контроллера вы можете response_to на эти вызовы ajax и возвращать JavaScript с динамическими данными, html или JSON.
Методы в jQuery для поиска ajax перечислены в этом разделе API jQuery. $.ajax
$.post
и $.get
являются основными.
Для вашего примера, $.get
было бы хорошим местом для начала. Вот пример прямо из документации API:
$.get('ajax/test.html', function(data) {
$('.result').html(data);
alert('Load was performed.');
});
Здесь - это Railscast о том, как Rails 3 обрабатывает ненавязчивый JavaScript вместе с пользовательскими атрибутами HTML5. Вы можете имитировать этот подход в Rails 2, но стандартные вспомогательные методы не будут генерировать для вас атрибуты data-remote
, data-method
, data-disable-with
или другие data-*
. В jQuery версии Rails 3 ujs вы можете видеть, что это больше всего похоже на предыдущий метод, о котором я упоминал, когда методы контроллера вызываются с $.ajax
и обрабатывают ответ по-разному в зависимости от dataType (который является 'script' по умолчанию.