【问题标题】:Ruby on Rails: Get json from controller in Javascript fileRuby on Rails:从 Javascript 文件中的控制器获取 json
【发布时间】:2014-03-19 00:13:42
【问题描述】:

在我的控制器中,我有一些 json:

votes_controller.rb:

def create
  ...
  vote_status = current_user.user_votes.pluck(:recipient_uid).include?(@user.uid)
  render json: vote_status
end

我需要在 javascript 文件中获取 vote_status

votes.js:

jQuery(function($) {
  $(".doWant").click( function () {
    var status = vote_status.evalJSON();
    var uid = $(this).parents("#dialog")[0];
    var username = $(this).parents("#dialog")[0];
    if(confirm("Are you sure?")) {
      $.ajax({
        url: '/votes' + "?uid=" + $(uid).attr("data-user-uid") + "&username=" + $(username).attr("data-user-username"),
        type: 'POST',
        success: function(data) {
          console.log(data)
        }
      });
    };
  });
});

但是有一个错误Uncaught ReferenceError: vote_status is not defined。我做错了什么?

谢谢!

【问题讨论】:

  • votes_controller 操作是如何/何时调用的?
  • var status = vote_status.evalJSON();中的vote_status在哪里定义?
  • @enchante 这是我的问题。我不清楚我应该如何以及在哪里定义它。如何在 javascript 中从控制器获取 json?

标签: javascript jquery ruby-on-rails json


【解决方案1】:

你没有定义这个变量:

var status = vote_status.evalJSON();

您必须定义该变量。

您似乎打算将该代码放入 success 函数,该函数将来自 ajax 调用的数据作为该函数的第一个参数返回:

success: function(data) {
  console.log(data)
}

【讨论】:

  • 但是我应该如何定义这个变量呢?我需要从votes_controller 获取 json 的值
  • @Gvcci data 变量包含渲染的vote_status 数据。
【解决方案2】:

vote_status在成功json回调中返回,在那里初始化状态

$.ajax({
    url: '/votes' + "?uid=" + $(uid).attr("data-user-uid") + "&username=" + $(username).attr("data-user-username"),
    type: 'POST',
    success: function(data) {
      var status = JSON.parse(data);
    }
  });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 2013-08-16
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多