Javascript Rails中同一视图中的多个AJAX表单

Javascript Rails中同一视图中的多个AJAX表单,javascript,jquery,ruby-on-rails,ajax,Javascript,Jquery,Ruby On Rails,Ajax,我有一个列表视图,每个列表都有一个与之关联的“收藏夹”按钮。这个按钮提交一个AJAX表单,如果已经喜欢这个列表,可以喜欢它,也可以不喜欢它。提交表单会调用like.js.erb方法或destroy.js.erb,这会更改按钮的状态 但是,由于js.erb文件以我正在更改的元素的#id为目标,因此这只适用于第一个元素。我也不能使用类,因为它会更改所有元素 允许用户喜欢或不喜欢列表,并且在不重新加载页面的情况下更改视图的最佳方式是什么 我尝试根据清单ID为每个ID提供一个唯一的编号,但无法将清单ID

我有一个列表视图,每个列表都有一个与之关联的“收藏夹”按钮。这个按钮提交一个AJAX表单,如果已经喜欢这个列表,可以喜欢它,也可以不喜欢它。提交表单会调用like.js.erb方法或destroy.js.erb,这会更改按钮的状态

但是,由于js.erb文件以我正在更改的元素的#id为目标,因此这只适用于第一个元素。我也不能使用类,因为它会更改所有元素

允许用户喜欢或不喜欢列表,并且在不重新加载页面的情况下更改视图的最佳方式是什么

我尝试根据清单ID为每个ID提供一个唯一的编号,但无法将清单ID传递给js.erb文件,因此这不起作用

以下是一些相关代码:

/listings/_like.html.erb

<%= link_to like_listing_path(@listing), method: :put, :remote => true, :class => "like-btn" do %>
<i class="fa fa-heart-o"></i>
<% end %>
$("#like-form").html("<%= escape_javascript(render('listings/unlike')) %>")
$("#like-size").html('<%= @listing.get_likes.size %>')
<%= link_to unlike_listing_path(@listing), method: :put, :remote => true,    :class => "unlike-btn" do %>
<i class="fa fa-heart liked"></i>
<% end %>
$("#like-form").html("<%= escape_javascript(render('listings/like')) %>")
$("#like-size").html('<%= @listing.get_likes.size %>')
true,:class=>“喜欢btn”do%>
/listings/like.js.erb

<%= link_to like_listing_path(@listing), method: :put, :remote => true, :class => "like-btn" do %>
<i class="fa fa-heart-o"></i>
<% end %>
$("#like-form").html("<%= escape_javascript(render('listings/unlike')) %>")
$("#like-size").html('<%= @listing.get_likes.size %>')
<%= link_to unlike_listing_path(@listing), method: :put, :remote => true,    :class => "unlike-btn" do %>
<i class="fa fa-heart liked"></i>
<% end %>
$("#like-form").html("<%= escape_javascript(render('listings/like')) %>")
$("#like-size").html('<%= @listing.get_likes.size %>')
$(“#like form”).html(“”)
$(“#类似大小”).html(“”)
/listings/inference.html.erb

<%= link_to like_listing_path(@listing), method: :put, :remote => true, :class => "like-btn" do %>
<i class="fa fa-heart-o"></i>
<% end %>
$("#like-form").html("<%= escape_javascript(render('listings/unlike')) %>")
$("#like-size").html('<%= @listing.get_likes.size %>')
<%= link_to unlike_listing_path(@listing), method: :put, :remote => true,    :class => "unlike-btn" do %>
<i class="fa fa-heart liked"></i>
<% end %>
$("#like-form").html("<%= escape_javascript(render('listings/like')) %>")
$("#like-size").html('<%= @listing.get_likes.size %>')
true,:class=>“不像btn”do%>
/listings/inspect.js.erb

<%= link_to like_listing_path(@listing), method: :put, :remote => true, :class => "like-btn" do %>
<i class="fa fa-heart-o"></i>
<% end %>
$("#like-form").html("<%= escape_javascript(render('listings/unlike')) %>")
$("#like-size").html('<%= @listing.get_likes.size %>')
<%= link_to unlike_listing_path(@listing), method: :put, :remote => true,    :class => "unlike-btn" do %>
<i class="fa fa-heart liked"></i>
<% end %>
$("#like-form").html("<%= escape_javascript(render('listings/like')) %>")
$("#like-size").html('<%= @listing.get_likes.size %>')
$(“#like form”).html(“”)
$(“#类似大小”).html(“”)

谢谢大家!

使用数据属性怎么样

<%= link_to like_listing_path(@listing), method: :put, :remote => true, :class => "like-btn", :"data-id" => user.id do %>
  <i class="fa fa-heart-o"></i>
<% end %>

使用数据属性怎么样

<%= link_to like_listing_path(@listing), method: :put, :remote => true, :class => "like-btn", :"data-id" => user.id do %>
  <i class="fa fa-heart-o"></i>
<% end %>

使用数据属性怎么样

<%= link_to like_listing_path(@listing), method: :put, :remote => true, :class => "like-btn", :"data-id" => user.id do %>
  <i class="fa fa-heart-o"></i>
<% end %>

使用数据属性怎么样

<%= link_to like_listing_path(@listing), method: :put, :remote => true, :class => "like-btn", :"data-id" => user.id do %>
  <i class="fa fa-heart-o"></i>
<% end %>

轨道方式

只需将清单的ID附加到erb中的ID中(因为您的表单不在那里,所以我假设某些结构如下所示):

现在您可以编写一些JS,如下所示:

$(“.like btn,.different btn”)。单击(函数(e){
e、 预防默认值();
var el=$(本);
$.ajax({
url:el.attr(“href”),
方法:邮寄
}).完成(功能(数据){
el.parent().html(数据);
});
});
同样的事情也适用于喜欢的数量

一句关于休息的话


我注意到您有两个不同的路径,一个是喜欢的路径,另一个是不喜欢的路径,因此我假设您已将这些路径手动添加到
routes.rb
中。如果你真的想利用REST的强大功能,你只需要一条到你的列表like的路径,然后使用
POST
创建like和
DELETE
删除like(即不像)。

只需将清单的ID附加到erb中的ID中(因为您的表单不在那里,所以我假设某些结构如下所示):

现在您可以编写一些JS,如下所示:

$(“.like btn,.different btn”)。单击(函数(e){
e、 预防默认值();
var el=$(本);
$.ajax({
url:el.attr(“href”),
方法:邮寄
}).完成(功能(数据){
el.parent().html(数据);
});
});
同样的事情也适用于喜欢的数量

一句关于休息的话


我注意到您有两个不同的路径,一个是喜欢的路径,另一个是不喜欢的路径,因此我假设您已将这些路径手动添加到
routes.rb
中。如果你真的想利用REST的强大功能,你只需要一条到你的列表like的路径,然后使用
POST
创建like和
DELETE
删除like(即不像)。

只需将清单的ID附加到erb中的ID中(因为您的表单不在那里,所以我假设某些结构如下所示):

现在您可以编写一些JS,如下所示:

$(“.like btn,.different btn”)。单击(函数(e){
e、 预防默认值();
var el=$(本);
$.ajax({
url:el.attr(“href”),
方法:邮寄
}).完成(功能(数据){
el.parent().html(数据);
});
});
同样的事情也适用于喜欢的数量

一句关于休息的话


我注意到您有两个不同的路径,一个是喜欢的路径,另一个是不喜欢的路径,因此我假设您已将这些路径手动添加到
routes.rb
中。如果你真的想利用REST的强大功能,你只需要一条到你的列表like的路径,然后使用
POST
创建like和
DELETE
删除like(即不像)。

只需将清单的ID附加到erb中的ID中(因为您的表单不在那里,所以我假设某些结构如下所示):

现在您可以编写一些JS,如下所示:

$(“.like btn,.different btn”)。单击(函数(e){
e、 预防默认值();
var el=$(本);
$.ajax({
url:el.attr(“href”),
方法:邮寄
}).完成(功能(数据){
el.parent().html(数据);
});
});
同样的事情也适用于喜欢的数量

一句关于休息的话


我注意到您有两个不同的路径,一个是喜欢的路径,另一个是不喜欢的路径,因此我假设您已将这些路径手动添加到
routes.rb
中。如果你真的想利用REST的强大功能,你真的只需要一条到你的列表like的路径,然后使用
POST
创建like,使用
DELETE
删除like(即不像)。

Rails的方式运行得很好。非常感谢。关于我的路线你是对的。谢谢你的提示。@Taylor很高兴我能帮上忙!轨道运行得很好。非常感谢。关于我的路线你是对的。谢谢你的提示。@Taylor很高兴我能帮上忙!轨道运行得很好。非常感谢。关于我的路线你是对的。谢谢你的提示。@Taylor很高兴我能帮上忙!轨道运行得很好。非常感谢。关于我的路线你是对的。谢谢你的提示。@Taylor很高兴我能帮上忙!