Railsのlink_to_function
Javascriptヘルパーのステータスはどうなっていますか? このstackoverflowの質問 を含めて、Rails 3.0で非推奨になり、その後非推奨になり、3.2.4で再び非推奨になったと読みました。これは私が信頼できるものですか?で、学生に教えますか?私はちょうど リリースノート(検索から)Rails 3.2.8 :
Button_to_functionおよびlink_to_functionヘルパーの非推奨を元に戻しました。ラファエルメンドンサフランサ
これは今どこに立っていますか?
link_to_function
は[〜#〜] not [〜#〜]3-2-stable
ブランチで非推奨になり、今後3-2-stable
で非推奨になることはありません。しかし、それは[〜#〜] is [〜#〜]現在のマスターブランチでは非推奨であり、リリース時にRails 4.0で非推奨になります。 Rails 4.1のコードから削除されました。したがって、これを行うように学生に教えることができます(Rails 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"
これがこの問題に対する私の解決策です:
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);
}
});
})
次に、Railsで実行できます。
link_to 'Awesome Button', '#', data:{on: :click, call: 'awesome_func',args: '[1,"yeah",{b:4}]'
これは彼らが私たちにコーディングしてほしい方法のようです:)、私はlink_to_functionが好きでしたが