Rails + Vue:访问实例变量

时间:2017-03-31 15:15:13

标签: javascript ajax ruby-on-rails-4 vue.js

我有一个简单的视图,但Purchase belongs to :client。因此,要访问purchases我需要提供client_id。 :

$(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;
        }
      });
    }
  });
});

如何访问ajax请求中的client_id?我尝试了<%= @client.id %>,但是对于nil:NilClass`它会收到错误undefined method id'。

如何传递该变量?

1 个答案:

答案 0 :(得分:3)

问题的答案是您无法直接在js函数中访问实例变量。这是因为js是一种客户端语言,只能在浏览器中运行,而ruby / rails是服务器端语言。

您可以在js中访问变量的唯一方法是将其作为html数据传递。例如,作为相应html.erb文件中的隐藏字段。

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

并以

的形式访问它
client_id: $('#client_id').val()

在js文件中。