Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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
Ruby on rails 将Ajax与rails结合使用的正确方法_Ruby On Rails_Jquery - Fatal编程技术网

Ruby on rails 将Ajax与rails结合使用的正确方法

Ruby on rails 将Ajax与rails结合使用的正确方法,ruby-on-rails,jquery,Ruby On Rails,Jquery,我正在尝试将ajax添加到投票系统中,但使用jQuery很难针对单个元素。这就是我到目前为止所做的: 索引操作中的投票链接 <%= link_to post_votes_path(post), :method => 'post', :remote => true do %> <span class="score"><%= post.votes.size %></span> <% end %> 投票中的jQuery#创建视图

我正在尝试将ajax添加到投票系统中,但使用jQuery很难针对单个元素。这就是我到目前为止所做的:

索引操作中的投票链接

<%= link_to post_votes_path(post), :method => 'post', :remote => true do %>
<span class="score"><%= post.votes.size %></span>
<% end %>
投票中的jQuery#创建视图(create.js.erb)


问题是当我点击链接投票时,它会改变所有帖子的html,而不仅仅是我尝试投票的帖子。我对jQuery没有太多经验,所以我忍不住觉得我遗漏了一些明显的东西。有什么想法吗?

我通常只使用JQuery的$.post。我正在使用asp.net,但假设rails也可以使用它

$.post("/someurltoyouraction", {myval:val},function(data){
  // do stuff after post
});

这将生成一个Ajax post请求。您可以在
{myval:val}
对象中定义post参数以符合您的要求。它本质上是一个基于键值定义的对象
{key:value}

所有跨度都有.score类。这就是一切都要改变的原因

这是一个可能的解决办法。 更改您的html:

<span class="score p_<%= post.id%>"><%= post.votes.size %></span>

然后在create.js.erb中进行更改

$('.score').html("I voted"); 
$('.score.p_<%= @post.id %>').html("I voted");
$('.score.p').html(“我投票”);
$('.score.p_<%= @post.id %>').html("I voted");