2017-03-31 98 views
0

我有一個簡單的視圖,但是Purchasebelongs to :client。因此要訪問purchases我需要提供一個client_id。 :Rails + Vue:訪問實例變量

$(document).ready(function() { 
    var purchases = new Vue({ 
    el: '#purchases', 
    data: { 
     purchases: [] 
    }, 
    ready: function() { 
     var that; 
     that = this; 
     $.ajax({ 
     url: 'clients/' + CLIENT_ID + '/purchases.json', // problem 
     success: function(res) { 
      console.log(res) 
      that.purchases = res; 
     } 
     }); 
    } 
    }); 
}); 

如何訪問client_id在Ajax請求?我試過<%= @client.id %>,但它得到了錯誤undefined method id'for nil:NilClass`。

如何傳遞該變量?

+0

問題在於你已經定義了'CLIENT_ID'? –

+0

它是視圖/控制器中的一個Ruby實例變量,並且在頁面參數中定義 –

回答

1

問題的答案是你不能直接在js函數中訪問實例變量。這是因爲js是隻能在瀏覽器中運行的客戶端語言,而ruby/rails是服務器端語言。

您可以在js中訪問變量的唯一方法是將它作爲html數據傳遞。例如,作爲相應的html.erb文件中的隱藏字段。

<%= hidden_field_tag('client_id', @client_id) %> 

並訪問它作爲

client_id: $('#client_id').val() 
在JS文件