Я наблюдал Railscasts о Ненавязчивый JavaScript и читать многочисленные учебные пособия, но две вещи Ненавязчивый JavaScript в Rails3 еще меня смущает:Использование простых JavaScript и мимолетные аргументы с Rails3 и UJS
- оконечная для простого JavaScript (скрывая некоторые элементы, добавляя класс CSS, ...)
- аргументы Переходя к JS
Позвольте мне прояснить это с примерами кода. Я хочу, чтобы сделать ссылку, которая затухает некоторый элемент с идентификатором «образец»:
link_to 'Fade sample', url, :remote => true
Каким должен быть URL, чтобы он мог выполнить JS? Если это будет новое действие в контроллер с именем, например, «JavaScript», поэтому он может получить доступ к JS в javascript.js.erb, который содержит:
$('#sample').fadeOut();
Кроме того, второй вопрос о UJS связан с передачей аргументов JS (тайм-аут, для этого примера). Я могу написать:
link_to 'Fade sample', url, :data-timeout => 1500, :remote => true
но не знаю, как получить доступ к тайм-ауту данных в javascript.
Я использую Rails 3.0.5, JQuery 1.5.2 и jquery-ujs.
Благодарим за ответ. Что касается первого ответа, я могу понять URL-адрес, но я не знаю, какой URL-адрес должен быть, когда я хочу указать не какой-то ресурс, а javascript. Должно ли быть какое-то новое действие в контроллере, названном, например, «показом», в каком случае файл javascript должен находиться в show.js.erb? В этом примере мне не нужно получать некоторые ресурсы, я просто хочу выполнить простой код javascript. – h00s
Вы можете раскомментировать последнюю строку в файле 'routes.rb'' match ': controller (/: action (/: id (.: Format))). После этого вы можете просто определить любой метод в контроллере, который может использовать его в link_to. Как вы сказали, функция 'something', вы можете передать ее с помощью hash' {: controller =>: some_controller,: action =>: something} '. –
Я бы посоветовал, если у вас в вашем приложении много js-обработки, вы должны определить для него одну функцию и передать ей параметры. например я бы определил действие js_handler в контроллере. теперь я дал hash '{: controller =>: my_controller,: action => js_handler,: what_to_do => 'task1'}', и в вашем методе вы можете использовать эти параметры для выполнения разных действий. –