【问题标题】:Rails + Vue: Accessing instance variableRails + Vue:访问实例变量
【发布时间】:2017-03-31 15:15:12
【问题描述】:

我有一个简单的看法,但是Purchasebelongs 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 %>,但它得到错误undefined methodid' for nil:NilClass`。

如何传递该变量?

【问题讨论】:

  • 问题是你在哪里定义了CLIENT_ID
  • 它是视图/控制器中的Ruby实例变量,在页面参数中定义

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


【解决方案1】:

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

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

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

并以身份访问它

client_id: $('#client_id').val()

在js文件中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 2012-12-06
    相关资源
    最近更新 更多