Подтвердить что ты не робот

Оговорка о статусе Rails? Link_to_function?

Каков статус link_to_function помощника Javascript в Rails? Я прочитал, в том числе в qaru.site/info/125639/..., что он устарел в Rails 3.0, а затем не обновлен, а затем устарел в 3.2.4. Это что-то, от чего я могу зависеть и учить студентов? Я просто прочитал примечания к выпуску (из поиска) для Rails 3.2.8:

Отменит устаревание кнопок button_to_function и link_to_function. Рафаэль Мендонса Франса

Где это сейчас?

4b9b3361

Ответ 1

link_to_function НЕ устарел в ветке 3-2-stable, и в будущем он не будет устаревшим в 3-2-stable. Но он IS обесцвечен в текущей ведущей ветке и будет устаревать в Rails 4.0 при его выпуске. Поэтому я думаю, что он будет удален из кода rails в 4.1. Таким образом, вы можете научить студентов делать это (из рельсов 4 журнала изменений):

Мы рекомендуем использовать ненавязчивый JavaScript. Например:

link_to "Greeting", "#", class: "nav_link"

$(function() {
  $('.nav_link').click(function() {
    // Some complex code

    return false;
  });
});

или

link_to "Greeting", '#', onclick: "alert('Hello world!'); return false", class: "nav_link"

Ответ 2

Это мое решение этой проблемы:

в javascript:

// define function to be called
function awesome_func(a,b,c){
  console.log(a,b,c);
}

//clean implementation of link_to_function
$(function(){
  $('[data-on][data-call][data-args]').each(function(d){
    try{
       $(this).on( $(this).data('on'), function(){
          window[$(this).data('call')].apply(window,$(this).data('args'))})
    }catch(e){
       if(typeof(console) != 'undefined' && typeof(console.log === 'function'))
         console.log(e);
    }
  });
})

Затем вы можете сделать в рельсах:

link_to 'Awesome Button', '#', data:{on: :click, call: 'awesome_func',args: '[1,"yeah",{b:4}]'

это похоже на то, как они хотят, чтобы мы кодировали:), мне понравилась link_to_function, хотя