簡體   English   中英

調用JavaScript中嵌入的具有不同參數的ruby方法

[英]Call a ruby method with different parameters embedded in javascript

我有這種ruby方法:

def something(sometext, jsvariable, rubyobject)
   return HTMLOBJECT
end

我想在javascript函數中像這樣調用此方法:

$("#someid").append('<% something("sometext", '/jsvar/', rubyobject) %>');

它不起作用。我不知道如何使用正確的變量格式從javascript函數中調用此方法。 我真的不知道確切的語法。

任何幫助深表感謝。

更新:這就是我想要做的

function somejsfunc(){
  $.ajax({ 
    url: "/app/SomeController/someMethod",
    data: {'something': something }
    success: function(data){
      var $response1 = $(data);
      jsvar = $response1.find('#anotherselector').text();
      $("#someid").append('<% something("sometext", '/jsvar/', @rubyobject) %>');
    }
 });
}

請注意

def something 

是一種通用方法,它根據這些參數以及傳遞給它的其他數據返回HTML DOM元素。

您無法執行此操作,因為erb模板會在應用程序啟動之前進行編譯。 如果要發送一些js參數,請使用遠程請求從服務器獲取信息。

UPD:類似這樣的東西

$.ajax({
   url: '/some_url',
   data: { jsvar: jsvar },
   success: function(data) {
       $("#someid").append(data.sometext);
   }
});

通常,我們的ruby在服務器上運行,而JavaScript在瀏覽器中運行,因此從另一個調用一個幾乎是不可能的。 您當然可以求助於@uselesssmile的建議者Ajax,但這不僅僅涉及簡單的方法調用。 另一方面,您可以使用opalrbruby編譯為JavaScript ,然后可以將其打包到客戶端的JavaScript並直接調用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM