Ruby 在 rails 上。 Ajax、jquery 部分影响所有相同的 class

Ruby on rails. Ajax, jquery affecting all of same class in partial

我是 jquery 的完全新手,但我正在尝试将 ajax 内容添加到我的 rails 应用程序。我正在渲染一个部分,它显示了一个用户列表和一个 link 来评价他们旁边的每个用户。当我单击 link 时,表单成功呈现并提交等等,但我遇到的问题是表单在 class 的每个实例上呈现。 我已经搜索并尝试使用 $(this) 但这似乎破坏了一切(没有渲染)。

Link 局部渲染多次:

<td> <%= link_to 'Click here to rate this user', new_user_review_path(:user_id => request.gig.user.id, :gigid => request.gig.id), class: "new-review", remote: true %> </td>

Jquery:

$('.new-review').hide().after('<%= j render("form") %>')

(隐藏 .new-review 的所有实例,并为每个用户显示表单)

我通过搜索尝试了各种方法(none 有效);

$(this).find('.new-review').hide().after('<%= j render("form") %>')

$(this)('.new-review').hide().after('<%= j render("form") %>')

$(".new-review").click(function(){
    $(this).find('.new-review').hide().after('<%= j render("form") %>');
});

$('.new-review', this).hide().after('<%= j render("form") %>')

任何提示将不胜感激,谢谢!

据我了解,问题是所有链接都有一个 class '.new-review',因此 jQuery 没有使用您需要的链接,而是全部使用它们。您需要以某种方式分离链接。我建议用这个改变 class:

#{@user.id}

在你的情况下它会是这样的:

<td> <%= link_to 'Click here to rate this user', new_user_review_path(:user_id => request.gig.user.id, :gigid => request.gig.id), class: "new-review-#{@user.id}", remote: true %> </td>

而对于 jQuery,您需要像这样更改它:

$('.new-review-<%= @user.id %>').hide().after('<%= j render("form") %>')

不确定我是否理解了这个问题,但我希望这对您有所帮助或提供任何提示。