2017-03-31 82 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文件