2013-03-14 55 views
1

我通過使用Sunspot solr作爲JSON從我的Rails操作中獲取作業搜索結果,並通過解析JSON數據在客戶端創建結果視圖&使用創建HTML元素Javascript.But從響應JSON我們不能得到工作關聯對象,所以通過使用響應JSON中的company_id字段,我試圖從嵌入式ruby標籤的幫助下從javascript本身訪問公司。如何在Rails ERB標記內調用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 tag.How我們可以訪問一個javascript變量在Rails內部ERB標籤這個變量是不可訪問。

回答

0

正如Aleks所說,你不能這麼做,因爲你在回調函數中使用ruby代碼。實現你想要做的最簡單的方法是在你從服務器獲得的json數據中傳遞公司名稱。

如果您使用to_json渲染JSON響應,請嘗試以下

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

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

def company_name 
    company.name 
end 
0

你不能那樣做,因爲JavaScript在客戶端,而erb在服務器上滑動。

通常,如果您想將某個變量傳遞給erb,您可以通過特定操作(如果您喜歡)在控制器中獲取該變量,並將該數據傳遞給erb。

你可以看看railcasts here你如何做到這一點。