出于问题介绍的目的,应用程序中的用户可以对提交的文章进行投票/投票。我通过以下方式定义了两条非宁静路线:
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元素,每个文章(存储)保存投票数。