文字列にメソッド名がある場合、Rubyではsend
を使用してメソッドを動的にディスパッチできます。Javascript/Coffeescript/jQueryにRubyの送信と同等の機能はありますか?
method_name = "delete"
send method_name
私も補間を利用することができます。
method_name = "add"
send "#{method_name}_task", args
私が何かを更新するために、JavaScriptで定義された2つの機能、削除する1、1をしました。それぞれのボタンは動的に追加され、現時点では削除メソッドだけがbutton.on "click"
でバインドされます。
b.on "click", (event) ->
event.preventDefault() # stop submission via postback
this_button = $(this)
task_id = this_button.data("task-id")
delete_task(task_id, this_button)
false
私はこれを行うことができるようにしたい:
method_name = "delete"
b.on "click", (event) ->
event.preventDefault() # stop submission via postback
this_button = $(this)
task_id = this_button.data("task-id")
send "#{method_name}_task", task_id, this_button
false
2つの機能の結合の唯一の違いは、この1行です。明らかな方法がある場合は、繰り返しを減らすと便利です。私は検索で何も見つけていないので、誰かが助けてくれればそれは大いに感謝するだろう。
あなたはcoffeescriptコードで何を送っていますか?あなたは 'obj'を持っています。 – Esailija
@Esailija申し訳ありませんが、それが明確でない場合は、私はJavaScriptでオブジェクトを使用していません。 Rubyは自動的に自己を使用します。つまり、この例ではオブジェクトは必要ありません。私はそれがより明確になると考えました。私はそれを変更します、ありがとう。 – iain
"Rubyは自動的にself _ifを使用します。受信者が明示的に指定されていません。" – iain