簡體   English   中英

如何在Rails ERB標簽中調用JavaScript變量

[英]How to call a javascript variable inside Rails ERB tag

我通過使用Sunspot solr作為JSON從Rails動作中獲得Job搜索結果,並通過解析JSON數據並使用Javascript創建HTML元素在客戶端中創建結果視圖,但是從響應JSON中我們無法獲得Job Association對象,因此,通過使用響應JSON中的company_id字段,我試圖借助嵌入式ruby標簽從javascript本身訪問公司。

  function submitForm() {
   var valuesToSubmit = $('#FRM_JOB_SEARCH').serialize();
    jQuery.ajax({
    type: "POST",
    url: $('#FRM_JOB_SEARCH').attr('action'),
    data :valuesToSubmit,
    success : function(json){
      var data = JSON.parse(json);
          $.each(data, function(key, val) {
                          create_blocks(key , val);
        });
    } ,
    dataype : 'json' ,
    remote : true });

    }

  function create_blocks(key , value) {
       var feeds = eval(value)
          var company_id = feeds["company_id"];
          var company_name = '<%= Company.find_by_id('company_id').name %>';
          console.log(company_name);
   }

但是在ERB標簽中無法訪問此變量。如何在RAILS erb標簽中訪問javascript變量。

您不能這樣做,因為javascript在客戶端,而erb在服務器幻燈片上。

通常,如果要將變量傳遞給erb,則可以通過特定操作在控制器中獲取該變量(如果願意),然后將該數據傳遞給erb。

您可以在此處查看如何進行廣播。

正如Aleks所說,您無法做到這一點,因為您在回調函數中使用了Ruby代碼。 實現目標的最簡單方法是在從服務器獲取的json數據中傳遞公司名稱。

如果您使用to_json來呈現json響應,請嘗試以下操作

 render json: @records.to_json(methods: [:company_name])

然后在模型中,添加company_name方法

 def company_name
   company.name
 end

暫無
暫無

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

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