Rails,“标准”jQuery Ajax与远程

时间:2013-11-12 21:16:10

标签: ruby-on-rails ajax

出于问题介绍的目的,应用程序中的用户可以对提交的文章进行投票/投票。我通过以下方式定义了两条非宁静路线:

get 'vote_up/:storage_id' => 'home#vote_up', :as => 'vote_up'
get 'vote_down/:storage_id' => 'home#vote_down', :as => 'vote_down'

<%= link_to image_tag("up1.png"), vote_up_path(post.storage_id), :class => "vote_up" %>
<%= link_to image_tag("down1.png"), vote_down_path(post.storage_id), :class => "vote_down", :remote => true %>

因此,第一个链接不会使用:remote => true,第二个链接将不会。

当我说“标准”Ajax时,我将用于vote_up操作,我的意思是:

家庭控制器内的

def vote_up
  storage = Storage.find(params[:storage_id])
  storage.vote.count += 1
  storage.vote.save

  render :json => {:votes => storage.vote.count, :id => params[:storage_id]}
end

因此,当用户点击vote_up按钮时,浏览器将发送以下ajax请求:
assets / javascript / home.js

$(function() {
  $('.vote_up').click(function() {
    $.get($(this).attr('href'), function(data) {
      var selector = "#like_counter-" + data.id;
      $(selector).html(data.votes);
    });

    return false;
  });
});

我的问题是这种方式与:remote=>true之间的区别如下所述。从技术角度来看,没有?我只能假设:remote => true是首选,因为它更像是“以铁路为导向”?

家庭控制器内的

def vote_down
    @storage = Storage.find(params[:storage_id])

    @storage.vote.count -= 1
    @storage.vote.save

    respond_to do |format|
      format.js
    end
  end

views / home / vote_down.js.erb

$(function() {
    var selector = "#like_counter-" + '<%= @storage.id %>';
    $(selector).html('<%= @storage.vote.count %>');
});

在所有示例中,selector是span元素,每个文章(存储)保存投票数。

0 个答案:

没有答案