Rails的link_to_function弃用状态?(Status of Rails' l

2019-07-18 05:25发布

什么是状态link_to_function Rails中的Javascript帮手? 我读,包括在这个计算器的问题 ,它是在Rails的3.0过时,那么undeprecated,然后再次3.2.4弃用。 有什么事情我可以依靠和教给学生? 我只读过为Rails 3.2.8版本说明(从搜索) :

恢复button_to_function和link_to_function助手弃用。 拉斐尔·门东萨弗兰卡

哪里该站在现在?

Answer 1:

link_to_function不是在弃用3-2-stable分支,它不会被弃用3-2-stable未来。 但它 depreacated在当前的主分支,并用Rails 4.0时,它释放被弃用。 所以我想它会从Rails代码在4.1中删除。 所以,你可以教给学生做到这一点(从轨道4的changelog):

我们建议使用不引人注目的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"


Answer 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,虽然



文章来源: Status of Rails' link_to_function deprecation?