Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何正确处理Rails 4中到的远程链接?JSON?_Javascript_Ruby On Rails_Json - Fatal编程技术网

Javascript 如何正确处理Rails 4中到的远程链接?JSON?

Javascript 如何正确处理Rails 4中到的远程链接?JSON?,javascript,ruby-on-rails,json,Javascript,Ruby On Rails,Json,我有以下代码: = link_to "#{icon('heart')} Props".html_safe, vote_picture_path(picture), class: 'tiny radius secondary button vote', method: :put, remote: true 下面是: # VOTE /pictures/1.json def vote respond_to do |format| if @picture.toggle_vo

我有以下代码:

= link_to "#{icon('heart')} Props".html_safe, vote_picture_path(picture), class: 'tiny radius secondary button vote', method: :put, remote: true
下面是:

  # VOTE /pictures/1.json
  def vote
    respond_to do |format|
      if @picture.toggle_vote(current_user)
        format.json { render json: @picture }
      else
        format.json { render json: @picture }
      end
    end
  end
我要做的是通过以下方式更新图片的总票数:

$ ->
  $(".vote").on "ajax:success", (e, data, status, xhr) ->
    vote_count_size = $(".vote-count .size").html()
    vote_count_size_integer = parseInt(vote_count_size)
    console.info data

然而,让我困惑的是console.info数据。它似乎从一个我不知道的来源返回了一些东西。我正在编辑/pictures/show.json.jbuilder,但它不会影响数据中的内容。我想返回一个json结构,其中包含数据中的总投票数,这样我就可以从成功回调中更新页面上的计数。

首先,您的
respond\u to
块可以进行显著重构:

  # VOTE /pictures/1.json
  respond_to :json

  def vote
     @picture.toggle_vote(current_user)
     respond_with @picture
  end

这将为您的
@picture
变量返回一个JSON对象。您必须详细说明您在
控制台中获得的数据?如果你提供你收到的数据,这将是一个巨大的帮助

您应该使用javascript文件(vote.js.erb)进行响应,在该文件中,您可以混合使用javascript和erb表达式来更改所需的页面元素:

$('.vote-count .size').html('<%=@picture.vote_count%> votes');

你能试试
bind
而不是
上的
吗?它会返回这个:我不知道如何返回,因为如果我编辑pictures/show.jbuilder中的内容,它不会影响这个。不确定你是否需要更多信息来完成这项工作?我的困惑是我应该这样做吗?
# VOTE /pictures/1.js
def vote
  respond_to do |format|
    @picture.toggle_vote(current_user)
    format.js 
  end
end